2015-12-20 105 views
1

我有什麼:

,基於用戶是否輸入/輸出相應的登錄/退出鏈接輸出日誌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); ?> 

我的問題:

如何使用服務器端方法將span包裹在錨點內。我不想訴諸像JavaScript這樣的客戶端方法。

+0

爲什麼你不能只回顯你需要的代碼? –

+0

@AndrewWilson我需要的代碼(鏈接)是通過調用wp_loginout()函數動態生成的。它可以自動執行多個步驟,包括檢測用戶是否登錄/註銷,輸出相關鏈接和隨機令牌以確保安全。這就是我使用函數返回輸出而不是回顯輸出的原因。 –

+0

對不起,我不禁使用WordPress。 –

回答

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

謝謝。我並不知道你使用過的兩個功能。 –

+1

很高興我能幫上忙。 http://www.wpbeginner.com/wp-themes/how-to-add-custom-items-to-specific-wordpress-menus/,這可能會派上用場。 – Athikrishnan