仅当使用函数时才显示管理页面

时间:2013-10-12 作者:Toine

我编写了一个小函数,每当在模板中的某个地方调用该函数时,该函数都会在页面上显示一个引号。由于没有人喜欢同一个报价,我为它创建了一个管理页面,可以在其中更改报价和其他一些设置。

现在我想使用这个函数。php还支持多个主题,尤其是因为它有很多有用的函数。并非每个主题都使用此引用。所以我想避免人们在WP后端找到这个报价选项,而模板中不支持它。因此,我正在寻找能够:

if (function "quotes" is used in any template of this theme) {
    Show-admin_page;
}
当然我可以把它放在插件中,但我更喜欢把它放在我的函数中,因为我不想每次都检查插件是否需要,也不想编写“依赖插件”的模板。

2 个回复
SO网友:Milo

如果不分析每个模板文件,我看不出这怎么可能。我认为更好的选择是通过过滤器输出报价,比如the_content, 或通过custom action. 前者可以让你检查钩子has_filter, 后者将允许您检查您的自定义操作是否通过has_action.

SO网友:s_ha_dum

我想说的是,你至少有两件事做错了。

首先,如果要在主题之间“共享”功能,请复制functions.php 这不是一种非常可靠的方法。每次更改某些内容时,您都会复制并重新复制。

其次,检查主题模板中是否使用了函数将是一个劳动密集型的过程。你不想那样做。

我可以想到一些更好的选择。

创建父主题以容纳共享代码,并创建子主题以实现共享代码Must Use Plugin 存放共享代码无论您选择哪种方式来选择性地使用“quotes”代码,只需提供一个助手函数来“引导”它即可。例如:

/* Shared code */
function register_my_custom_menu_page(){
    add_menu_page( \'custom menu title\', \'custom menu\', \'manage_options\', \'custompage\', \'my_custom_menu_page\', plugins_url( \'myplugin/images/icon.png\' ), 6 ); 
}

function my_custom_menu_page(){
    echo "Admin Page Test"; 
}

function init_my_custom_admin_page() {
  add_action( \'admin_menu\', \'register_my_custom_menu_page\' );
}
/* End Shared code */

/* Boot the shared code in your theme */
init_my_custom_admin_page();
这是相当粗糙的代码。例如,我可能会使用一个类来很好地封装所有内容。不过,这应该会给你一个想法。

结束

相关推荐

Shotcode error on functions

您好,我有一个生成错误的短代码。有人能帮忙吗?add_shortcode(\'do-action\', \'do_action_shortcode\'); function do_action_shortcode($atts, $content = \'\') {   ob_start();   do_action($content);   $out = ob_get_contents();   ob_end_clean();   return $