Lightningの投稿一覧をカスタマイズする

Lightningの投稿一覧は、PHPを使ってカスタマイズできることをご存知でしょうか?

私は、初めて受注した案件で、新たに投稿された記事に表示される「新着!!」を「NEW!!」に変更してほしいとお願いされた経験があります。その際、Vector社のブログ記事「Lightning 投稿一覧カスタマイズ徹底解説 | 株式会社ベクトル」を見つけました。今回はこの記事の内容を共有したいと思います。

当時、私はPHPの初学者でした。そのため、この記事の内容を理解するのに苦労しました。今でもPHPコードで何が行われているのかを完全には理解できないことがあります。一緒に理解を深めていきましょう!

まずは「新着!!」を「NEW」に変更するためのコードをご覧ください。

add_filter( 'vk_post_options', function( $options ) {

	// $options の 'new_text' の値を変更する
	$options['new_text'] = 'NEW';
	
	// 変更した $options を返す
	return $options;

} );

vk_post_options フィルターに追加したコールバック関数に引数として渡している $options は、_g3/template-parts/loop-item.php で定義されています。

$options = array(
	// card, card-noborder, card-intext, card-horizontal , media, postListText.
	'layout'                     => 'media',
	'display_image'              => true,
	'display_image_overlay_term' => true,
	'display_excerpt'            => true,
	'display_date'               => true,
	'display_new'                => true,
	'display_taxonomies'         => false,
	'display_btn'                => true,
	'image_default_url'          => false,
	'overlay'                    => false,
	'btn_text'                   => __( 'Read more', 'lightning' ),
	'btn_align'                  => 'text-right',
	'new_text'                   => __( 'New!!', 'lightning' ),
	'new_date'                   => 7,
	'class_outer'                => 'vk_post-col-xs-12 vk_post-col-sm-12 vk_post-col-lg-12',
	'class_title'                => '',
	'body_prepend'               => '',
	'body_append'                => '',
);VK_Component_Posts::the_view( $post, $options );

$options配列です。

配列の基本

index => value 形式でインデックスと値を定義します。
複数の要素を同時に定義する場合はカンマで区切ります。
配列の要素にアクセスするには array[key] 構文を使います。

$options の要素は次のとおりです。

  • layout:投稿一覧のレイアウト(card, card-noborder, card-intext, card-horizontal , media, postListText)を指定する
  • display_image:アイキャッチ画像の表示(true)/非表示(false)を制御する
  • display_image_overlay_term:アイキャッチ画像の右上に項目を表示するか否か(true/false)を制御する
  • display_excerpt:投稿の抜粋の表示(true)/非表示(false)を制御する
  • display_date:投稿日の表示(true)/非表示(false)を制御する
  • display_new:新着の表示(true)/非表示(false)を制御する
  • display_taxonomies:タクソノミーの表示(true)/非表示(false)を制御する
  • display_btn:ボタンの表示(true)/非表示(false)を制御する
  • image_default_url:アイキャッチ画像が設定されていないときに使用するデフォルト画像のURL指定をする
  • overlay:アイキャッチ画像の上に重ねる要素を指定する
  • btn_text:ボタンのテキストを指定する
  • btn_align:ボタンの配置(text-right、text-left、text-center)を制御する
  • new_text:新着のテキストを指定する
  • new_date:新着を表示する日数を指定する
  • class_outer:各投稿のdiv要素に追加するクラスを指定する
  • class_title
  • body_prepend:各投稿の先頭に追加する要素を指定する
  • body_append:各投稿の末尾に追加する要素を指定する

__( 'Read more', 'lightning' )__( 'New!!', 'lightning' ) は、翻訳を取得するための関数です。1つ目の引数が翻訳するテキストで、2つ目の引数がテキスト ドメインです。

VK_Component_Posts::the_view(); は、1件分の投稿を表示するためのメソッドです。

  • VK_Component_Posts はクラスで、_g3/inc/vk-components/package/class-vk-component-post.php で定義されています
  • the_view() は、VK_Component_Posts クラス内で定義されているメソッド
  • $post はWordPressが標準で用意している変数で、表示する投稿の情報
  • $options は、記事の表示に関する情報

プログラミングのスキルは、実際に手を動かすことで向上します。$options の値を変更するためのコードをアレンジして試してみることをおススメします!

コメントする