一度当サイトを訪問していただいた読者の方は、
もしかしたら、他の記事にも興味を持っていただけるかもしれません。
そんなとき他の記事を簡単に探せるようにしたいですね。
記事に追加したカテゴリやタグや、検索を使うことで探しやすくなります。
ですが、1つの問題がありました…。
今回はその内容について書き残しておこうと思います。
問題
ウィジェットを使うことで、簡単に画面にカテゴリやタグの一覧を表示させることができます。
しかし、追加したウィジェットから特定のカテゴリやタグをクリックすると、「投稿が見つかりませんでした」💦
カテゴリ一覧 | 遷移先 |
---|---|
確認すると、正しく表示されるのは、デフォルトの投稿記事のみで、
カスタム投稿の一覧は表示されていません💦
ググってみましたが、日本語サイトでは有効な情報にはたどり着くことができませんでした…。
なので、英語のサイトで検索!
そしてまさに!な情報を発見しました!!
解決方法
以下のコードをfunction.phpに追記します。
カテゴリやタグからカスタム投稿一覧へのリンク手順
①管理画面>外観>テーマエディターを開く。
②「編集するテーマを選択」欄で、現在利用中の子テーマが選択されていることを確認する。
③「テーマのための関数 (functions.php)」を開く。
④以下を追記し、保存する。
function any_ptype_on_cat($request) { if ( isset($request['category_name']) ) $request['post_type'] = 'any'; return $request; } add_filter('request', 'any_ptype_on_cat'); function any_ptype_on_tag($request) { if ( isset($request['tag']) ) $request['post_type'] = 'any'; return $request; } add_filter('request', 'any_ptype_on_tag');
コードの説明
追記したコードの意味は以下の通りです。
// カテゴリにすべての投稿タイプを含める function any_ptype_on_cat($request) { // 引数に指定したリクエストパラメータに'category_name'が入っているかをチェック if ( isset($request['category_name']) ) // 入っていたら、'post_type'にanyをセットし、すべての投稿タイプを指定する $request['post_type'] = 'any'; // セットしたリクエストパラメータを返す return $request; } // フィルタフックに上記関数を登録する add_filter('request', 'any_ptype_on_cat'); // タグにすべての投稿タイプを含める function any_ptype_on_tag($request) { // 引数に指定したリクエストパラメータに'tag'が入っているかをチェック if ( isset($request['tag']) ) // 入っていたら、'post_type'にanyをセットし、すべての投稿タイプを指定する $request['post_type'] = 'any'; // セットしたリクエストパラメータを返す return $request; } // フィルタフックに上記関数を登録する add_filter('request', 'any_ptype_on_tag');
失敗した方法
カテゴリも、タグクラウドも、サイドバーウィジェットに表示しているため、
phpを使えばなんとかできるのではないかと思い、やってみましたが、
以下の方法では解決しませんでした。
function.phpにウィジェットでphpコードを書けるようにするためのコードを追加し、
ウィジェットでphpコードを書くと、
画面が崩れ、「重大なエラーが発生しました」が表示されました。
まとめ
見た目できて満足してちゃんとテストしないなんて、元SEとしてあるまじきですね…。
反省しきりです…。
皆さんは、ちゃんと思った通りに動いているか必ず確認してくださいね!