在侧边栏上挂接一个函数?

时间:2011-03-19 作者:Cole

我正在寻找一种方法,以便在加载侧边栏时向其顶部添加一些内容。

我已经尝试挂接get\\u侧边栏操作referenced here, 但它似乎覆盖了侧栏调用并加载了我的函数?除了创建小部件,还有更好的解决方案吗?如果可能的话,我想避免这种情况,但我并不完全反对这种想法,最好是用钩子:)

我的钩子是这样的:add_action(\'get_sidebar\', \'social_links\');

注意:调用的函数只是一个社交媒体链接列表,没有什么特别之处。。。

(在本地MAMP服务器上运行最新版本(3.1))

3 个回复
SO网友:kaiser

在侧栏底部加载

在大多数侧栏中,可以找到对wp_meta() 动作钩子,你可以钩住侧边栏(大部分是底部)。

在侧边栏顶部加载函数get_sidebar( $name ) 调用模板中所需的侧栏(这允许有不同的侧栏)。如果你想在边栏顶部添加内容,你可以自由使用边栏顶部运行的内部操作挂钩,就在加载边栏之前,你可以将所有内容挂接到这个调用中。

示例:

function add_before_my_siderbar( $name ) 
{
    echo "Loaded on top of the {$name}-sidebar";

    // Example that uses the $name of the sidebar as switch/trigger
    \'main\' === $name AND print "I\'m picky and only echo for special sidebars!";
}
add_action( \'get_sidebar\', \'add_before_my_siderbar\' );
主题注释get_sidebar-挂钩位于get_sidebar() 在包含提要栏文件之前执行函数和触发器。这意味着,您应该使用此挂钩在和之前添加内容wp_meta() 在侧边栏后添加内容。如果主题正在使用wp_meta() 早于侧边栏模板的结尾,那么它就做错了。

SO网友:Bainternet

get_sidebar 钩子是在获取侧栏模板文件的函数上调用的,因此这不是正确的方法。

如果您还不能创建一个小部件,您可以将您的函数转换为短代码,并在内置文本小部件中使用它。

How? 很简单,您说您的函数名为social_links 然后添加:

add_shortcode(\'SL\', \'social_links\'); 
// and to make sure Wordpress calls shortcode in sidebars
add_filter(\'widget_text\', \'do_shortcode\');
Usage? 同样简单的是,添加一个文本小部件并将[SL] 在里面。

只需确保函数返回输出,而不是回显输出。

SO网友:jepser

与返回wp\\u metahook不同,返回结果示例:

add_action(\'wp_meta\',\'my_function\')

function my_function(){
   //no return \'hello\';
   //try this and it will shows at the top of the sidebar
   echo \'hello\';
}
请参见:wp_meta hook on Codex

结束