这里有两种可能的解决方案-
Solution one 不是将模式标记硬编码到模板中,而是使用wp_footer
将其与数据一起插入的操作:
function wpa_wp_footer(){
$someval = \'foo\'; // get_option results
echo \'<div id="modalpopup"><div id="inside">\' . $someval . \'</div></div>\';
}
add_action( \'wp_footer\', \'wpa_wp_footer\' );
就个人而言,我会这样做,尽可能简单,保持主题不可知。
Solution two 更符合您的原始想法,并将数据获取到javascript中,以便您可以自己插入。但不是通过ajax单独请求数据,localize the script 在呈现页面时将数据打印到页面。
这是你的标准enqueue 用于向主题添加javascript,以及用于添加额外数据的本地化调用。
function wpa_scripts() {
wp_enqueue_script(
\'wpa_script\', // script handle
get_template_directory_uri() . \'/js/script.js\',
array(\'jquery\'),
null,
true
);
// do your get_option here to set whatever data you\'re passing
$script_data = array(
\'some_var\' => \'someval\'
);
wp_localize_script(
\'wpa_script\', // the script handle enqueued above
\'wpa_data\',
$script_data
);
}
add_action( \'wp_enqueue_scripts\', \'wpa_scripts\' );
然后在javascript中访问如下数据:
jQuery(\'#inside\').html( wpa_data.some_var );