implode関数の使い方

implode関数は以下の書式で使用します。第二引数の配列を第一引数の区切り文字で連結して文字列を返します。

explode(区切り文字(連結文字),連結したい配列);

例えばWordpressのsingle.php内で、投稿記事が属するカテゴリーのカテゴリーIDを配列に格納して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);
?>

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

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

次に、この配列をimplode関数で結合します。結合時の区切り文字はカンマを指定します。

<?php
$category_id_str = implode(',', $category_id);
var_dump($category_id_str);
?>

dumpすると、配列が区切り文字で結合されて文字列になったのがわかります。

string(6) "2,32,4"

これでWP_Queryのパラメーター’cat’に、カンマ区切りのカテゴリー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をコピーしました