本サイトで使用しています無料のワードプレス(以下WP)のテーマCocoonに、本日(2019/2/21)まで約3週間にわたり機能修正をして来ましたが、本記事での修正内容をもって、いったん最後にしたいと思います。
一回修正をし始めると、いろいろ歯止めが利かなくなるところがありまが、基本的にはサイトナビゲーションに関する機能についてだけ修正をしてきたつもりです。
修正に対する基本的な姿勢
- ひとつの記事にはひとつだけカテゴリーを設定する。
- カテゴリーとメニューの階層は一致させる。そのため記事タイトルは26文字(3/7日に34文字に変更)以内に抑える。
- 記事が含まれるカテゴリーのカテゴリーページに表示される「上りのパンくずリスト」ですぐ上のフォルダーを選択した時に、選択されたフォルダーに含まれる子カテゴリーと単独記事を「下りのバングリスト」として表示させる。
大きく実施したかったことは、上記の3点で、その他はそれに付随した修正のつもりでしたが、少しやり過ぎた感はあります。今後WPのバージョンアップやCocoonのバージョンアップに追随して行けるか?少し心配ではあります。
Cocoonの管理画面からできるカルーセルの設定
カルーセルの設定は、Cocoon設定→カルーセルタブからできます。
ただしカルーセルについては、標準では表示させる記事をカテゴリーから設定することができる仕様です。
そうした場合、本サイトでは記事には1つのカテゴリーしか設定しない運用ルールのため、カルーセル用のカテゴリーを作り、そのカテゴリーを記事に紐づける事はNGになります。
そこで、やむなくプログラムを修正し、記事に設定したタグを使いカルーセルに表示するようにします。
ただ、この修正は容易でCocoon Masterに置かれている1つのプログラムの中で1行をコメントにし、その上で1行追加するだけで実装することができます。
なおCocoonのカルーセル設定にある「表示カテゴリー」で1つはチェックはしないとカルーセルを表示しない仕様のようです。従って、修正後は「表示カテゴリー」はプログラムではいませんが、解り易いカテゴリーにひとつチェックを入れてください。それ以外の項目はそのまま使用しますので、事前に必要に応じて設定しておく必要があります。
カルーセル用のタグの新規登録
カルーセル用のタグは事前に作成しておく必要があります。
投稿→タグで適当な名前で新規登録をします。
なお修正時に必要なのは、登録したカルーセル用のタグのtag_IDになります。
このtag_IDはタグ一覧の画面で新規登録したカルーセル用のタグのリンク上にマウスカーソルを当てた時にブラウザのステータスバーに表示されるURLの中に「tag_ID=XX」(XXは数字)で表示されますので、覚えておきます。
実際の修正内容
サーバ上のcocoon-master/tmp/carousel.phpを子テーマにtmpフォルダーを作り(既に作ってある場合はその中に)同じ名前のまま保存します。
保存した子テーマのcarousel.phpを開き13行目に「’tag_id’ => XX, 」を1行追加して、XXは新規登録したtag_IDの数字にします。
さらに挿入後14行目となる「’cat’ => get_carousel_category_ids(),」行の先頭に「//」を入力してください。
<?php //カルーセル /** * Cocoon WordPress Theme * @author: yhira * @link: https://wp-cocoon.com/ * @license: http://www.gnu.org/licenses/gpl-2.0.html GPL v2 or later */ if ( !defined( 'ABSPATH' ) ) exit; if (is_carousel_visible() && get_carousel_category_ids() && !is_amp()): ?> <?php //カルーセルに関連付けられた投稿の取得 $args = array( 'tag_id' => XX, //ここを修正 // 'cat' => get_carousel_category_ids(), 'orderby' => get_carousel_orderby(), //ランダム表示 'no_found_rows' => true, 'posts_per_page' => get_carousel_max_count(), ); $args = apply_filters('cocoon_carousel_args', $args); $query = new WP_Query( $args ); endif; ----- 省略 ----- wp_reset_postdata(); ?> <?php endif ?>
以上、ご報告申し上げます。