PR

Cocoonカルーセルに載せる記事をカテゴリーではなくタグで選ぶ

ワードプレスのテーマCocoonについて
この記事は約4分で読めます。

2019/5/31【追記】
Cocoonのバージョン 1.7.9.2 でカルーセルがタグで設定できるようになりました。
→Cocoonの機能に切り替えるためにはバージョンアップ後、Cocoon設定を変更した上で、子テーマtmp/carousel.phpを削除してください。
※この記事の内容は上記以前のバージョンをご利用の場合のみ有効となりますのでご注意ください。//

本サイトで使用しています無料のワードプレス(以下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 ?>

以上、ご報告申し上げます。