【スポンサーリンク】

[Cocoon] 記事の関連タグをサイドバーに表示した・その2(ショートコードにできた)

とりあえずのメモプログラミングホームページ運用

結論としては、the_tag_links() ではなく、get_the_tag_links()を呼べばよかっただけでした。

【スポンサーリンク】

以前の方法の問題点

以前、記事の関連タグをサイドバーに表示するときに、ショートコードにできず、テキストウィジェットでPHPコードを実行する、という方法でむりやり解決していました。

ただし、この方法はウィジェットを確認するたびに、ビジュアル表示になって「コードが評価」されててまうため、作り直しが必要でした。

ウィジェットを確認するだけで壊れてしまうのです……

その後、WordPressやCocoonのソースコードの理解が深まったので、もう一度 「関連タグ」のショートコードを作成してみようと思います。

the_tag_links()の関数定義を確認する

まずは、GitHubでcocoon-masterからソースコードをzip形式でダウンロードします。

展開してからターミナルで開き、grepコマンドで「the_tag_links()」をソースコード全体から探します。

grepでは、-nrオプションをつけると、フォルダ内を再帰的に検索してくれるようになります。

/lib/utils.php“の125行目で定義されていることがわかりました。

ソースコードでthe_tag_links()の中身を確認すると、なぜうまくいかなかったのかわかりました。

文字列を返すのではなく、「echo」を実行していたからです(126行目)。

ショートコード用関数でget_the_tag_linksを呼び出す

実際にタグ一覧のHTMLを構成して、文字列として返しているのは、「get_the_tag_links()」関数です。ですので、これをショートコードの関数で使用して、返せばよいことになります。

テーマエディタで「functions.php」に以下のコードを追加します。

/** タグのショートコードを作る*/
function generate_tags( $atts ) {
        return get_the_tag_links();
}
add_shortcode( 'tags', 'generate_tags' );

これでtagsショートコードで、geterate_tags関数の結果が出力できるようになりました。

あと一歩ソースコードを読んでいれば、解決していたのですね。

当時は、ソースコードの検索もコマンドではなく、一つずつファイルを開いて探していたので、力尽きていました。grepさまさまです。

QRコードを読み込むと、関連記事を確認できます。
[Cocoon] 記事の関連タグをサイドバーに表示した・その2(ショートコードにできた)
【スポンサーリンク】
タイトルとURLをコピーしました