我正在编写一个插件,但在何时触发插件代码的特定功能时遇到了一些困难。
/*
// Plugin information goes here
*/
// ***** Area A
$GLOBALS['example_class'] = new example_class;
class example_class {
// ***** Area B
public function admin_init() {
add_menu_page(
// ...
);
} // End of admin_init function
} // End of example class
add_action('init', function() {
global $example_class;
// ***** Area C
if ( ?????? ) {
// Sanitize and set the view role
$view = ( isset( $_REQUEST['view'] ) ) ? sanitize_key( $_REQUEST['ex'] ) : 'get_all';
// Manage submitted data
switch ( $view ) {
// ...
} // End of switch for view
// Sanitize and set the action role
$action = ( isset( $_REQUEST['action'] ) ) ? sanitize_key( $_REQUEST['action'] ) : NULL;
// Manage submitted data
switch ( $action ) {
//...
} // End of switch for action
} // End of if page is being shown
});
add_action( 'admin_menu', function() {
global $example_class;
$example_class->admin_init();
});
add_shortcode( 'show_public_random', function () {
global $example_class;
// ...
});
根据 stackexchange上一篇文章中的建议,我将插件的控制器端分离为init
事件调用的函数。但是,我不希望init
在每次页面加载时评估事件函数中包含的代码 - 我希望仅在加载包含短代码的页面时评估我的代码。
我尝试加载一个布尔类变量,该变量初始化为 false,但在 add_shortcode 函数中更改为 true,但到那时,为时已晚 -init
事件已触发,并且函数的内容未运行。
请帮助我 - 我应该在我的代码的区域 C 中使用哪个表达式?我应该测试什么以确保init
事件功能仅在使用短代码时运行?