WordPress Tips

urlencode() expects parameter 1 to be string ...PHP警告の原因とWPカテゴリーのパラメータ

2022-04-06

WordPressの乗り換えするなら今がチャンス

エックスサーバー 移転代行サービス無料キャンペーン中。WordPressの移転もOK。今なら 33,000円 → 0円

urlencode() expects parameter 1 to be string ...PHP警告の原因とWPカテゴリーのパラメータ

ショートコードでカテゴリを選んで新着投稿記事を出力しようとしていたところ思うような出力にならず、ログを確認したところ以下のようなPHPwarningが。

PHP Warning:  urlencode() expects parameter 1 to be string, array given in /wp-includes/formatting.php on line 5501

文字列であるべきところに配列がある場合に出る警告とのことです。

改めてコードを確認してみてわかりました。

間違った記述

$args = array(
	'post_type'   => 'post',
	'category_name'=> array( 'info', 'item' ),
	'post_status' => 'publish',
	'posts_per_page' => 10,
	'orderby'     => 'desc'
);

3行目のカテゴリスラッグを複数指定する際、array()で囲っていました。

正しくは

$args = array(
	'post_type'   => 'post',
	'category_name'=> 'info,item',
	'post_status' => 'publish',
	'posts_per_page' => 10,
	'orderby'     => 'desc'
);

お恥ずかしいケアレスミスでした。。。

カテゴリに関連づけられた記事を表示したいときに

カテゴリーのパラメータ

$args = array(
'cat' => 5, //整数int、カテゴリID
'category_name'=> 'info,item', //文字列string、カテゴリースラッグ
'category__and' => array( 1, 3 ), //配列array、カテゴリID
'category__in' => array( 1, 3 ), //配列array、カテゴリID
'category__not_in' => array( 1, 3 )  //配列array、カテゴリID
);

cat

カテゴリIDを指定する

'cat' => 5,

除外したいカテゴリを指定

'cat' => -7,

category_name

カテゴリスラッグを指定する

'category_name'=> 'info',

カテゴリスラッグを複数指定する

カテゴリinfoまたはitemのいずれかに属するカテゴリ

'category_name'=> 'info,item', 

カテゴリinfo,itemどちらにも属する記事

'category_name'=> 'info+item', 

category__in

カテゴリID (子カテゴリは含まない)記事を表示する

'category__in' => 3,

カテゴリ1と3のいずれかに属する(小カテゴリ は含まない)記事を表示する

'category__in' => array( 1, 3 ) ,

category__and

カテゴリ1と3の両方に属する記事を表示する

'category__and' => array( 1, 3 ),

category__not_in

カテゴリ1と3に属さない記事を表示する

'category__not_in' => array( 1, 3 ) 

'cat' => 5,//(int) - use category id.
'category_name' => 'staff, news', //(string) - 指定したカテゴリーのいずれかに属する投稿を表示する。カテゴリースラッグで指定する。
'category_name' => 'staff+news', //(string) - 指定したカテゴリーの「全て」を持つ投稿を表示する。カテゴリースラッグで指定する。
'category__and' => array( 2, 6 ), //(array) - カテゴリーIDを指定する。
'category__in' => array( 2, 6 ), //(array) - カテゴリーIDを指定する。
'category__not_in' => array( 2, 6 ),

今月キャンペーン特典があるサービス

  • ロリポップ!
    ハイスピードプラン36ヶ月で実質月額440円 - 2023年2月10日(金)23:59まで
  • エックスサーバー
    12ヶ月以上で半額キャッシュバック月額495円&ドメイン永久無料 - 2023年2月3日(金)12:00まで
  • Xserverビジネス
    12ヶ月以上契約で初期費用無料、3ヶ月・6ヶ月で初期費用半額 - 2023年4月4日(火)12:00まで

-WordPress Tips