【WordPress】ローカルとサーバーで非公開ページの挙動が違う…

びぼーろく。

親ページとしてのみ使いたくて、パンくずリストには表示したくない類のページを実現するのに、親ページを「非公開」にしてpost_statusで条件分岐させる…っていうのをやったんだけど、ローカルではうまくいったのに、サーバーにデプロイすると非公開ページにぶら下がるページがすべて表示されない事態になった。

原因はよく分からないけど、結局WP_Queryで取得する際にpost_statusに明確に指定して取得したらいけた。

サンプルコード

とある関数の引数に$privateを追加し、$privateがtrueだったら、非公開も取得するようにした。(デフォルトはfalse)

:
$status_param = array( 'publish' );
if ( $private ) {
	$status_param = array( 'publish', 'private' );
}

$wp_query    = new WP_Query();
$child_pages = $wp_query->query(
	array(
		'post_type'   => 'page',
		'post_parent' => $post_id,
		'nopaging'    => true,
		'post_status' => $status_param,
	)
);
:

なぜローカルではいけたのだろう…。

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください