操作是否显示在菜单之外(_A)?

时间:2013-02-15 作者:Ina

我正在使用Bill Erickson的“向任何菜单添加额外代码”功能:

<?php
/**
 * Add Extra Code to Any Menu
 * @author Bill Erickson
 * @link http://www.billerickson.net/customizing-wordpress-menus/
 *
 * @param string $menu
 * @param object $args
 * @return string modified menu
 */
function be_menu_extras($menu, $args) {
//$extras = \'<li class="right">Your extras go here</li>\';
if (\'secondary\' == $args->theme_location) 
    //return $menu . $extras;
      return $menu . \'<li>\' . do_action(\'posts_logout_link\') . \'</li>\';
else
    return $menu;
}
add_filter(\'wp_nav_menu_items\',\'be_menu_extras\', 10, 2);
插入do_action(\'posts_logout_link\'); 从Logout Password Protected Posts插件。

有人能解释一下原因吗do_action 显示在$menu.

如果我使用html,它会出现在菜单的末尾<li> 标签,就像它应该的那样。(使用$extras似乎在其他领域复制了链接。)

1 个回复
最合适的回答,由SO网友:birgire 整理而成

我想原因是echo vs公司return:

功能posts_logout_link 从…起

http://plugins.svn.wordpress.org/logout-password-protected-posts/trunk/logout.php

正在使用echo。

因此,您的代码同时返回和回显值。

ps:您可以考虑使用输出缓冲来解决此问题

ob_start();
do_action(\'posts_logout_link\');
$logout_link=ob_get_clean();

return $menu . \'<li>\' . $logout_link . \'</li>\';
或者根据需要修改插件代码函数,并将其放入函数中。php文件。

结束

相关推荐

Logout redirect to home page

我正在使用自定义菜单进行登录/注销,下面是我的代码:<li> <?php if (is_user_logged_in()) { $user = wp_get_current_user(); echo \'Welcome <strong><a href=\"http://kolkataonwheelsmagazine.com/wp-admin/index.php\" >\'.$user->user_first