サポート » 使い方全般 » 記事のタグを取得し、metakeywordに設定する記述について。

  • 解決済 gacky0504

    (@gacky0504)


    PHPの記述についての質問になります。

    PHPは初心者ながらも勉強しながらWordPressをカスタムしています。

    現在、meta keywordの出力を投稿記事のタグを取得して表示されるように、下記の様にしているのですが、

    <meta name="keywords" content="<?php $posttags = get_the_tags(); if ($posttags): foreach($posttags as $tag): ?><?php echo $tag->name; ?>,<?php endforeach; endif;?>" />

    条件分岐を使って、ページごとに出力するmeta情報を管理しやすくしていこうと思い、下記の記述の仕方に変えてみたのですが、下記のコードだとタグが複数あった場合全てをキーワードに出力してくれることが出来ません。

    if (is_single()) { $title=wp_title('',false).'|'.get_the_author().'の記事'.'|'.get_bloginfo( 'name' ); $description=get_the_excerpt(100);
    $posttags = get_the_tags();if ( $posttags ) {foreach ( $posttags as $tag ) {$keywords=$tag->name.',';}
    
    <title><?php echo $title; ?></title>
    <meta name="description" content="<?php echo $description; ?>" />
    <meta name="keywords" content="<?php echo $keywords; ?>" />

    PHP初心者なりに調べて色々な書き方を試しましたが、うまく「%keywords」に取得したタグの名前を入れることが出来ませんでした。

    プラグインを探せばそういった物もありそうなんですが、出来るだけ使わずに勉強もかねてやっていこうと考えています。

    解決策をご存知の方がいらっしゃいましたら、よろしくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター jim912

    (@jim912)

    foreach の中で $keywords に代入する形になっているので、最後の1つのタグしか表示されず、しかも最後にカンマが入ってしまいますね。

    私がよくやるのは、foreach では配列に代入し、ループ終了後に implode で結合する方法をよく使います。

    勉強中されているということなので、ぜひチャレンジしてみてください。

    返信ありがとうございます。

    その通りで1つしか表示されません。

    implodeですね・・・調べてる時に一度試した記憶があります。

    ループ終了後ですね。もう一度試してみます!

    ありがとうございました。

    色々なサイトを参考にしながらどうにか出来ました。
    ありがとうございました!!

    $posttags = get_the_tags();
    if ( $posttags ) {
      $tagname = array();
      foreach ( $posttags as $tag ) {
         array_push($tagname,$tag->name);
      }
      $keywords = implode(",", $tagname);
    }

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「記事のタグを取得し、metakeywordに設定する記述について。」には新たに返信することはできません。