Close

Web技術Tips

Homepage Tips Homepage Tips

ホームWeb技術TipsWordPressマルチサイトでカスタムタクソノミーが使えない!?

SHARE

SHARE

WordPress 2014.07.30(公開)

WordPressマルチサイトでカスタムタクソノミーが使えない!?

WordPressを導入しているホームページでマルチサイトを使用していて、『Aブログ』に、『Bブログ』の投稿内容を表示させるパターンはよくあり、『switch_to_blog』を使用すればほとんどの場合問題なく『Bブログ』の内容を引っ張ってくることができます。

しかし、wp_query等の引数に『カスタムタクソノミー』を与えて投稿内容を絞り込むようなケースが動作しないことがありました。

WordPressのバージョンは【3.8.2】でした。

【サンプルコード】

<?php
switch_to_blog(2);

$arg = array(
	'posts_per_page' => '3',
	'tax_query' => array(
		'relation' => 'AND',
		array(
		'taxonomy' => 'example_taxonomy',
		'field' => 'id',
		'terms' => array( 1,3,5 )
		)
	),
);
$my_query = new WP_Query($arg);
if($my_query -> have_posts()):
?>

<ul>
	<?php
	while($my_query -> have_posts()): $my_query -> the_post();
	?>
	<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
	<?php
	endwhile;
	?>
</ul>

<?php
endif;
wp_reset_postdata();
restore_current_blog();
?>

上記のコード自体は問題ありません。

2行目でswitch_to_blog(2)としているので、IDが『2』のブログから、カスタムタクソノミー『example_taxonomy』(9行目)に属している投稿を引っ張ってきて表示されるはずです。

しかし表示されませんでした。

表示させる側のブログにも同じタクソノミーの設定が必要?

コード自体に問題がないならば何が原因なのか…??

いろいろと試行錯誤した結果、『表示させる側のブログ』、つまり上記の例で言えば『Aブログ』にも、『Bブログ』で使用しているカスタムタクソノミーをコピーしたところ解決しました。

マルチサイトでのカスタムタクソノミー使用

上図のように、元々はBブログで使用していたカスタムタクソノミーを、Aブログにも登録します。また、Aブログに同じカスタムタクソノミーを登録する際に、『ターム』まではコピーする必要はありませんでした。つまり空のカスタムタクソノミーのコピーです。

カスタムタクソノミーの登録についてはプラグイン『Custom Post Type UI』を使用しました。

試してはいませんが、functions.phpで直接登録しても問題無いと思います。

DOE(横浜)のニュースとブログ

News News

横浜のWeb制作会社DOEはホームページ制作に関連するWeb技術、Webデザイン、SEO対策情報など人気&おすすめ記事を随時公開中です。
尚、Twitterでは現場の声がリアルタイム配信中です。良かったらShareして繋がってください。