【问题标题】:Add span inside anchor output using PHP's ob_get_contents function使用 PHP 的 ob_get_contents 函数在锚输出中添加跨度
【发布时间】:2015-12-20 03:54:16
【问题描述】:

我有什么:

一个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 之类的客户端方法。

【问题讨论】:

  • 为什么你不能直接回显你需要的代码?
  • @AndrewWilson 我需要的代码(链接)是通过调用 wp_loginout() 函数动态生成的。它自动化了许多步骤,包括检测用户是否登录/退出,输出相关链接和随机数令牌以确保安全。这就是我使用函数返回输出而不是回显它的原因。
  • 对不起,我不使用 WordPress。
  • 添加wordpress标签。

标签: php html wordpress ob-start ob-get-contents


【解决方案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') 
}

【讨论】:

  • 谢谢。我不知道你使用了这两个函数。
  • 很高兴我能帮上忙。 wpbeginner.com/wp-themes/… ,这对你可能会派上用场
猜你喜欢
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
相关资源
最近更新 更多