2017-02-14 54 views
0

這是我第一次嘗試在PHP。 試圖在wordpress中創建自定義短代碼來調用自定義元數據並將其放入頁面內容中。它工作得很好,而不功能輸出不出現在div

function wpsl_staff() { 
echo '<div class="staff">' .wpsl_get_staff(). '</div>'; 
function wpsl_get_staff() { 

,並與簡碼是

add_shortcode('wpsl_staff', 'wpsl_get_staff'); 

輸出是正確的,但輸出出現在上述所有其他內容頁面的頂部,當我在瀏覽器中檢查它沒有div或class id,只是作爲文本出現。我如何將它包裝在一個div中,並給它ID,以便它正確地位於內容頁面上(它應該在兩個圖像之間顯示,並在另一個簡碼中顯示)我已經設法給它一個類ID,並讓它出現在一個div中,但是輸出仍然出現在圖像和其他短代碼上方的頁面頂部。

<?php 
function wpsl_get_staff() { 
global $post; 
$queried_object = get_queried_object();{ 

$Manager = get_post_meta($queried_object->ID, 'wpsl_Manager', true); 
if (!empty($Manager)) return 'Manager : ' .$Manager . "<br>"; 
     else {} 

$Assitant = get_post_meta($queried_object->ID, 'wpsl_Assistant_Manager', true); 
if (!empty($Assistant)) return 'Assistant Manager : ' .$assistant . "<br>"; 
     else {} 

$Agent = get_post_meta($queried_object->ID, 'wpsl_Agent', true); 
if (!empty($Agent)) return 'Agent : ' .$Agent . "<br>"; 
     else {} 
} 
} 

function wpsl_staff() { 
echo '<div class="staff">' .wpsl_get_staff(). '</div>'; 

} 
add_shortcode('wpsl_staff', 'wpsl_dio_staff'); 

感謝

  • 託卡

回答

0

簡碼的功能都應該回報結果,而不是直接輸出。

function wpsl_staff() { 
    return '<div class="staff">' .wpsl_get_staff(). '</div>'; 
} 

編輯:您只能從一個函數返回一個值 - 因此,如果您wpsl_get_staff應該對所有三種類型的返回數據,那麼你需要先組裝該數據到一個字符串變量,然後返回在函數的結束 - 是這樣的:

function wpsl_get_staff() { 
    global $post; 
    $queried_object = get_queried_object(); 
    $output = ''; 

    $Manager = get_post_meta($queried_object->ID, 'wpsl_Manager', true); 
    if (!empty($Manager)) { 
    $output .= 'Manager : ' .$Manager . "<br>"; 
    } 

    $Assitant = get_post_meta($queried_object->ID, 'wpsl_Assistant_Manager', true); 
    if (!empty($Assistant)) { 
    $output .= 'Assistant Manager : ' .$assistant . "<br>"; 
    } 

    $Agent = get_post_meta($queried_object->ID, 'wpsl_Agent', true); 
    if (!empty($Agent)) { 
    $output .= 'Agent : ' .$Agent . "<br>"; 
    } 

    return $output; 
} 
+0

我明白,但是當我使用的回報有頁面上沒有輸出,而回聲顯示正確的輸出(雖然輸出不會出現在正確的地方) –

+0

_「而回聲顯示correc t輸出(儘管輸出沒有出現在正確的位置)「_ - 是的,因爲你正在使用echo,它顯示在錯誤的地方。此代碼在組裝內容之前運行,因此使用echo「時間」是錯誤的。如果你沒有得到任何回報,那麼其他的一定是錯誤的。通過檢查生成的HTML輸出開始調試。 – CBroe

+0

對不起,應該澄清。使用像你這樣的回報告訴我,管理員輸出在頁面上顯示正確,但其他2完全不顯示 –