我正试图整理一些已经运行了很长时间的代码。具体来说,我过去常常在header.php
我正试图将其转变为functions.php
.
应仅为中具有特定值的页面加载其中一个脚本wp_postmeta
. 准确地说,当且仅当此表具有true
对于meta_key "mathjax"
, 应加载mathjax脚本。
在里面header.php
我用过
function my_init() {
if (!is_admin()) {
// REGISTER/ENQUEUE OTHER SCRIPTS...
$mathjax = get_post_meta($post->ID,\'mathjax\',true);
if($mathjax == \'y\'){
wp_enqueue_script(\'mathjax\');
}
}
}
add_action(\'init\', \'my_init\');
现在,此代码在中不起作用
functions.php
因为
$post
未定义。我还能把代码移到
functions.php
如果是这样的话,我怎样才能让它工作呢?
SO网友:websupporter
EDIT:如果在函数中使用$post,当然必须定义它:
function xyz(){
global $post;
//Your code
}
Initial answer, might help others:在我看来,你并没有在一个动作中使用它,或者如果是这样的话,你会提前使用它。它应该在“init”操作中工作。所以你可以这样做
<?php
add_action( \'init\', \'enqueue_conditionally\' );
function enqueue_conditionally(){
$mathjax = get_post_meta( get_the_ID(),\'mathjax\',true);
if($mathjax == \'y\'){
wp_enqueue_script(\'mathjax\');
}
}
?>
参考号:
https://codex.wordpress.org/Plugin_API/Action_Reference/init