我正在Genesis中使用一个自定义页面模板,需要删除帖子内容,并在设置了特定条件后将其替换。这部分工作正常,但我还需要在新内容中显示来自变量的信息。
这看起来很简单,但有些地方不起作用,我想这是因为我不知道如何将变量正确地传递到函数中。我假设在函数外部指定的变量将在函数中可用。这是我的模板:
//* Template Name: Notification Template
$notice ="ALERT!"; //This will be set dynamically from code above, but I\'ll keep it simple for now.
if($notice){
//echo $notice ; // If I echo here, it displays at the top of the page.
remove_action( \'genesis_entry_content\', \'genesis_do_post_content\' );
add_action ( \'genesis_entry_content\', \'do_custom_content\', 5 );
function do_custom_content(){
echo $notice; // This is not displaying anything!
echo \'Test Output\'; //This text does display
}
}
当我在do\\u custom\\u content()函数中回显$通知时,什么都没有发生。因此,我可能不理解php是如何工作的,因为$notice没有传递到do\\u custom\\u content()函数中。
最合适的回答,由SO网友:brianjohnhanna 整理而成
如果要动态设置通知,我要做的就是在回调函数中拉入通知。但如果你出于任何原因不能做到这一点,你可以做一些像这样的魔法:
if( $notice ) {
remove_action( \'genesis_entry_content\', \'genesis_do_post_content\' );
add_action ( \'genesis_entry_content\', function() use ($notice) {
echo $notice;
}, 5 );
}
这利用了
php use
keyword available to anonymous functions.