TL;DR, Skip to Trouble
我是一名程序员和网络开发人员。我正试图推出自己的小企业网站,以展示我的才能。因此,我为每个主要开发框架创建了子域,我可以使用这些框架来开发客户站点。每个都已成功运行。
DotNetNuke-ASP。NET-主站点Joomla-CodeIgnitor/CakePHP-我承认我是个老学生。我过去更喜欢记事本/凯特,而且都是手工完成的,但我理解技术的变化。直到最近,我和其他“网络人”一样,会购买一个预先准备好的主题,添加一点内容,确保一切正常,然后转售。为了不让自己看起来像一个“饼干切割者”,也为了不让自己的小额资金因购买别人定价过高的主题而破产,我决定通过自己为每个子域创建主题来展示客户的技能,希望这会让我与众不同。。。。
不像我想的那么容易我去了_s, 并创建了一个启动主题我走到Darkside by integrating Bootstrap 进入我的主题。我很喜欢吸引眼球,我不想手动重新创建按钮和网格,也不想技术改变我决定this blog example, 作为我创造力的基础。我知道,但我起步很慢麻烦开始了我将模板中的代码转换为Wordpress节文件(header.php、footer.php和sidebar.php),跨栏1跳过了。呜呜。
在找到BootstrapNavWalker Helper. 跨栏2跳了起来。呜呜。
我将以下代码添加到PHP函数中,以获得登录链接。
/**
* Add Login/Logout to Menu
*/
function add_login_logout_link($items, $args) {
if( $args->theme_location == \'primary\' ) {
$loginoutlink = wp_loginout(\'index.php\', false);
$items .= \'<li>\'. $loginoutlink .\'</li>\';
}
return $items;
}
add_filter(\'wp_nav_menu_items\', \'add_login_logout_link\', 10, 2);
这很有效,但我想要一个按钮,所以我换了
$items
收件人:
$items .= \'<li><button type="button" class="btn btn-default">\'. $loginoutlink .\'</button></li>\';
当我在Chrome中开发时,我想它是有效的。我回到家,尝试了Firefox:
Q: 该按钮在Firefox中可见,但单击它不会起任何作用。在Chrome中单击它会进入登录页面,那么正确的输出方式是什么呢$items
那么按钮和/或所有引导项在每个浏览器中都能正常工作?
Q: 我在回顾了来自不同地方的几十个片段后,选择了上面的片段。看到这些,我看到一些使用了输出缓冲区函数,一些没有。在将函数输出到浏览器之前,在缓冲区中包装函数有什么好处?
SO网友:Sisir
查看您的代码(因为我没有看到任何可查看的实时链接)。我假设您正在按钮标记中输出锚标记(使HTML无效)。请尝试以下功能。注意,我将html从button更改为anchor标记。
/**
* Add Login/Logout to Menu
*/
function add_login_logout_link($items, $args) {
$redirect_to = home_url();
if( $args->theme_location == \'primary\' ) {
$loginoutlink = wp_loginout(\'index.php\', false);
$link = wp_logout_url($redirect_to);
$label = \'Logout\';
if(!is_user_logged_in()){ // user not logged in, show login url
$link = wp_login_url( $redirect_to );
$label = \'Login\';
}
$items .= \'<li><a class="btn btn-default" href="\'. $link .\'">\'. $label .\'</a></li>\';
}
return $items;
}
add_filter(\'wp_nav_menu_items\', \'add_login_logout_link\', 10, 2);
Using Output Buffer
仅在必要时使用输出缓冲区。这可能会产生不寻常的行为。
Here is an example.