WordPressで「preview」すると「not found」になるときの対処法

WordPressで「preview」すると「not found」になるときの対処法

ひろゆき

ひろゆき

対策

プレビューの場合には処理が走らないように調整しましょう。

修正例

function change_posts_per_page($query) {
	//管理画面、プレビュー、メインクエリーじゃないときは処理しない
	if ( is_admin() || ! $query->is_main_query() || is_preview())
		return;

	//HOGE POSTTYPE
	if(!empty($query->query_vars["post_type"]) && $query->query_vars["post_type"] == "hoge"){
		$query->set( 'posts_per_page', '10' );//件数変更
		$query->set( 'orderby', 'post_date' );//ソート指定
		$query->set( 'order', 'DESC' );//ソート順番
		$query->set( 'post_status', 'publish' );//公開状態
	}
}
add_action( 'pre_get_posts', 'change_posts_per_page' );

preview画面でpre_get_postsを使わない場合は上記の記述で良いですが、もし使いたい場合はもう少し細かく分岐する必要がありそうです。
逆に詳細ページでpre_get_postsを使わないという場合などは、is_singleで除外しちゃっても良いかと思います。

まとめ

WordPressはカスタマイズの幅が広いだけに、ニッチ過ぎて検索しても出てこないバグなど、思わぬ落とし穴にはまることがあります。
ただ、冷静になると案外簡単に解決できてしまうことも多いので、常に己との戦いですね。

ではまた。

 

【WordPressを目的に沿ってカスタマイズ】

公開前の記事を共有できるWordPressプラグイン「Public Post Preview」

WordPressのパーマリンク設定を変更して、SEOや日本語URLの対策をしよう

WordPressのカスタムフィールドを利用して、過去記事の公開日時を自動で変更する方法

WordPressでコメントやリビジョンなどの機能を削除・停止するときに使うプラグイン5選

WordPressで「Blade」テンプレートエンジンを使おう!

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

エンジニアのひろゆきや。大阪生まれの大阪育ち。LIGを代表するエンジニアになるため、頑張るで。ほんま、よろしくやで。

このメンバーの記事をもっと読む
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL