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

Add span inside anchor output using PHP's ob_get_contents function

我有:

一个PHP函数,根据用户是否相应登录in/out.

输出日志in/outlink
<a href="foo">bar</a>

我需要的:

我需要一个 span 环绕锚元素内的 link 文本。

<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.

这样的客户端方法

尝试,

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') 
}