2017-02-14 24 views
0

これは私の最初の試みです。 カスタムのショートコードを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を与えてコンテンツページに正しく表示させるには(これは2つの画像と別の短いコードの間に表示する必要があります)以前はクラス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'); 

おかげ

  • TOCA

答えて

0

ショートコード機能は、それを直接出力されていない、リターン結果になっています。

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

編集:あなたが唯一の機能から一つの値を返すことができます - ので、あなたのwpsl_get_staffは3種類すべてのデータを返すことになっている場合は、あなたが最初の文字列変数にそのデータを組み立てる必要があり、その後、関数の最後にそれを返す - このような何か:

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を示します(出力は正しい場所に表示されませんが) "_ - はい、あなたがエコーを使用しているため、間違った場所に表示されます。このコードはコンテンツがアセンブルされる前に実行されるため、エコーを使用すると「タイミング」が間違っています。あなたがリターンで何の出力も得られないならば、他の何かが間違っていなければなりません。生成されたHTML出力をチェックしてデバッグを開始します。 – CBroe

+0

申し訳ありませんが明らかにする必要があります。あなたのようなリターンを使用すると、マネージャの出力はページに正しく表示されますが、他の2はまったく表示されません。 –

関連する問題