0
所以我有這個基於WordPress標準編碼的小部件。我宣佈了一種變量來同時使用後端和前端的目的。getElementById從WP返回空變量
public function widget($args, $instance) {
global $post;
$sid = $instance['id'];
$name = $instance['name'];
$args = array('post_type' => 'content_manager','post_id' => $sid);
$query = new WP_Query($args);
echo $args['before_widget'];
echo $args['after_widget'];
}
public function form($instance) {
global $post;
$args = array('post_type' => 'content_manager'); ....
$loop = new WP_Query($args);
$title = ! empty($instance['title']) ? $instance['title'] : esc_html__('New title', 'text_domain');
$sid = ! empty($instance['id']) ? $instance['id'] : esc_html__('New ID', 'text_domain');
$name = ! empty($instance['name']) ? $instance['name'] : esc_html__('Empty Content', 'text_domain');
我使用的變量可以在javascript中的值
<script>
function defineValue(sel)
{
var title = sel.options[sel.selectedIndex].text;
var id = sel.options[sel.selectedIndex].value;
document.getElementById("<?php echo esc_attr($this->get_field_id('title')); ?>").value = title;
document.getElementById("<?php echo esc_attr($this->get_field_name('id')); ?>").value = id;
document.getElementById("<?php echo esc_attr($this->get_field_name('name')); ?>").value = title;
}
</script>
當我加載控件,輸入和其他選項顯示的名稱和ID,但在Javascript返回空,除非如果我救它首先。
我試圖測試
<?php echo esc_attr($this->get_field_name('id')); ?>
,這是結果
widget-content-loader-__i__-id
這是爲什麼發生?
注:
首先輸入等元素有ID和其他屬性的變量當我檢查的DOM
<input class="widefat" name="widget-content-loader[21][title]" id="widget-content-loader-21-title" value="New title" type="text">
從這個這個腳本:
<input
class="widefat"
name="<?php echo esc_attr($this->get_field_name('title')); ?>"
type="text"
id="<?php echo esc_attr($this->get_field_id('title')); ?>"
value="<?php echo esc_attr($title); ?>">
謝謝提前
好吧,我添加了一個註釋,請看看。即使沒有javascript,我也許可以使用<?php echo esc_attr($ this-> get_field_name('title'))檢索數據。 ?>因爲它適用於諸如輸入等元素,但它不會鍛鍊 – leojarina