使用 PHP 的 ob_get_contents 函数在锚点输出中添加跨度

Add span inside anchor output using PHP's ob_get_contents function

提问人:Clarus Dignus 提问时间:12/20/2015 最后编辑:Clarus Dignus 更新时间:12/20/2015 访问量:421

问:

我有什么:

一个PHP函数,根据用户是否相应地登录/注销,输出登录/注销链接。

<a href="foo">bar</a>

我需要什么:

我需要一个围绕锚元素内链接文本的跨度。

<a href="foo"><span>bar</span></a>

我的代码:

add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);
function add_login_logout_link($items, $args) {

        ob_start();
        wp_loginout('index.php');
        $loginoutlink = ob_get_contents();
        ob_end_clean();

        $items .= '<li>'. $loginoutlink .'</li>';

    return $items;
}

我已经检查了 wp_loginout() 函数中的潜在参数,但存在的两个参数不适用:

<?php wp_loginout( $redirect, $echo ); ?>

我的问题:

如何使用服务器端方法将跨度包装在锚点中。我不想求助于像 JavaScript 这样的客户端方法。

php html wordpress ob-start ob-get-contents

评论

0赞 12/20/2015
为什么你不能直接回显你需要的代码?
0赞 Clarus Dignus 12/20/2015
@AndrewWilson 我需要的代码(链接)是通过调用 wp_loginout() 函数动态生成的。它自动执行了许多步骤,包括检测用户是否已登录/注销、输出相关链接和随机数令牌以确保安全。这就是我使用函数返回输出而不是回显它的原因。
0赞 12/20/2015
对不起,我忍不住,但我不使用WordPress。
0赞 Athikrishnan 12/20/2015
添加标记。wordpress

答:

1赞 Athikrishnan 12/20/2015 #1

尝试

wp_logout_url ( string $redirect = '' )函数而不是wp_loginout('index.php')

    ob_start();
    wp_logout_url('index.php');
    $logoutlink= ob_get_contents();
    ob_end_clean();

    $items .= '<a href="'.$logoutlink.'"'><span></span></a>;

用于检查天气用户是否登录。is_user_logged_in()

ob_start();
if (is_user_logged_in()) {
    wp_logout_url('index.php');
} else {
    site_url('index.php') 
}

评论

0赞 Clarus Dignus 12/20/2015
谢谢。我不知道你用过的两个函数。
1赞 Athikrishnan 12/20/2015
很高兴我能帮上忙。wpbeginner.com/wp-themes/......,这可能会对您派上用场