array_push関数の使い方

array_push関数は以下の書式で使用します。第一引数の配列の最後に、第二引数の要素を追加します。

array_push(要素を追加する配列,追加したい要素);

例えばWordpressのsingle.php内で、投稿記事が属するカテゴリーのカテゴリーIDをarray_push関数を利用して配列に格納しdumpします。

<?php
//single.php

//現在の投稿IDからカテゴリーを取得する
$categories = get_the_category($post->ID);
//カテゴリーIDを代入する配列を定義する
$category_id = array();

foreach($categories as $category):
//現在の投稿が持っているカテゴリーIDを配列に格納
	array_push($category_id, $category->cat_ID);
endforeach;

var_dump($category_id);
?>

なお、上記array_push関数の部分は以下のように書き換えることもできます。この場合は配列の初期化の記述、$category_id = array();がなくても動作します。

foreach($categories as $category):
	$category_id[] = $category->cat_ID;
endforeach;

結果、配列に以下3件のデータが格納されているのが確認できます。カテゴリーIDは2と32と4です。

array(3) { [0]=> int(2) [1]=> int(32) [2]=> int(4) }

これでWP_Queryのパラメーター’category__in’に、カテゴリーIDの配列が指定できます。関連リンクで投稿記事と同じカテゴリーの記事をランダムで5件表示する際の指定です。

<?php
$args = array(
	'post__not_in' => array($post->ID), //現在の投稿を関連記事から除外する
	'posts_per_page'=> 5,               //関連記事に表示する投稿数を指定
	'category__in' => $category_id,     カテゴリーIDの配列を指定
	//'cat' => $category_id_str,        カテゴリーIDの文字列を指定
	'orderby' => 'rand',                //ソートをランダムに指定
);
$the_query = new WP_Query($args);
?>
タイトルとURLをコピーしました