2017-11-03 9 views
1

各ページの最後とすべての投稿で、タグを短いコードでリストとして出力したいと思います。Wordpressのページ/ポストからすべてのタグをショートコードのリストとして取得するには?

残念ながら、私はPHPについてよく分かりませんが、理解できる人は間違いなく以下のコードを使用して間違いを訂正することができます。

ありがとうございます!

<?php // functions.php | get tags 
function addTag($classes = '') { 

    if(is_page()) { 
     $tags = get_the_tags(); // tags 
     if(!empty($tags)) 
     { 
      foreach($tags as $tag) { 
       $tagOutput[] = '<li>' . $tag->name . '</li>'; 
      } 
     } 
    } 
    return $tags; 

} 
add_shortcode('tags', 'addTag'); 
+0

が存在しない場合は、この記事はあなたが必要なものをやるん空戻りますか? https://stackoverflow.com/questions/28202455/wordpress-shortcode-for-tag-list – webdevdani

+0

私はそれを試しました、それは空を返しました – adifatz

答えて

1

このメソッドは、マークアップを印刷できるように文字列を返す必要があります。

"ショートコード関数は、ショートコードを置き換えるために使用されるテキストを返す必要があります。" https://codex.wordpress.org/Function_Reference/add_shortcode

function getTagList($classes = '') { 
    global $post; 
    $tags = get_the_tags($post->ID); 
    $tagOutput = []; 

    if (!empty($tags)) { 
     array_push($tagOutput, '<ul class="tag-list '.$classes.'">'); 
     foreach($tags as $tag) { 
      array_push($tagOutput, '<li>'.$tag->name.'</li>'); 
     } 
     array_push($tagOutput, '</ul>'); 
    } 

    return implode('', $tagOutput); 
} 

add_shortcode('tagsList', 'getTagList'); 

編集:get_the_tags以来is_pageために削除チェックが簡単に任意の

+0

あなたの答えをありがとう!今私は理解している、なぜ彼は以前に "配列"を返したのですか?あなたのコードをshortcode [tagsList]として使用しましたが、出力は空です。それはわかります:/ – adifatz

+0

@janhのようなis_pageチェックと関係していると思います! – webdevdani

+0

これは投稿にのみ追加する方が簡単ですか? – adifatz

1

何かを変更していない限り、ページにはタグがありません。

つまり、これはうまくいくはずです。また、タグの周りに<ul>を追加しますが、それを変更することができます。私はis_singularを使用しましたが、[tags]をカスタムポストタイプに追加してそこに出力したくない場合を除き、おそらくその状態がなければ手放すでしょう。 さらに修正を加えたいと思っています。そうしないと、the_tagsの使用に関するwebdevdaniの提案はおそらく簡単です。

// get tags 
function addTag($classes = '') { 
    if(is_singular("post") || is_singular("page")) { 
     $tags = get_the_tags(); 
     if(is_array($tags) && !empty($tags)) { 
      $tagOutput = array("<ul>"); 
      foreach($tags as $tag) { 
       $tagOutput[] = '<li>' . $tag->name . '</li>'; 
      } 
      $tagOutput[] = "</ul>"; 
      return implode("", $tagOutput); 
     } 
    } 
    return ""; 
} 
add_shortcode('tags', 'addTag'); 
関連する問題