カスタム投稿のプレビューが404で表示されない時の対処方法

2018年10月19日 2019年1月30日 Wordpress ,

公開済みのカスタム投稿記事をプレビューをすると、「ページが見つかりませんでした」「NOT FOUND」など404エラーでプレビューが表示されない現象。
その原因は、投稿フォーマットにあるかもしれません。

カスタム投稿記事のプレビューが404で表示されない原因と、正常にプレビュー出来るようにする方法を解説します。

プレビューURLを確認

「ページが見つかりませんでした」となったプレビューのURLを確認してみましょう。

http://example.com/custom/post-1234/?preview_id=99&preview_nonce=62e6b4e4a8&post_format=standard&_thumbnail_id=99

URLの中に&post_format=standardというパラメータは含まれてますか?
これは「投稿フォーマット」のパラメータで、カスタム投稿ではプレビューが表示できない場合があります。

&post_format=standardの部分を削除し、プレビュー画面を更新してみてください。
プレビューが正しく表示されたら「投稿フォーマット」が原因で確定です。

 

投稿フォーマットとは、記事の特性を区別するための機能です。

WordPressで投稿フォーマット機能を使えるようにするには、function.phpにadd_theme_support関数を追記します。

add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );

投稿フォーマットを有効にすると、投稿画面に「フォーマット」項目が追加されるようになります。

Wordpressの投稿フォーマット

投稿画面の投稿フォーマット設定エリア

他にも「画像」や「リンク」「動画」など色々あります。

関数リファレンス/add theme support

function.phpを修正する

投稿フォーマットを使ってない場合、機能そのものを無効してしまえば解決します。

function.phpに記述されているカスタム投稿関数を修正します。
'supports'の配列にpost-formatsが含まれていると思います。
post-formatsを削除すれば、カスタム投稿で「投稿フォーマット」が無効になります。

register_post_type('custom_posts', array(
	'labels' => array(
		'name' => 'カスタム投稿',
		'all_items' => 'カスタム投稿一覧',
		'menu_name' => 'カスタム投稿',
		'add_new' => 'カスタム投稿を追加',
		'add_new_item' => '新しいカスタム投稿を追加',
		'edit_item' => 'カスタム投稿を編集',
		'new_item' => '新しいカスタム投稿',
		'view_item' => 'カスタム投稿を表示',
		'search_items' => 'カスタム投稿を探す',
		'not_found' => 'カスタム投稿はありません',
		'not_found_in_trash' => 'ゴミ箱にカスタム投稿はありません',
		'parent_item_colon' => ''
	),
	'public' => true,
	'publicly_queryable' => true,
	'show_ui' => true,
	'query_var' => true,
	'rewrite' => true,
	'capability_type' => 'post',
	'hierarchical' => false,
	'menu_position' => 5,
	'has_archive' => true,
	'supports' => array('title','editor','post-formats','thumbnail'), // <= 'post-formats'を消す
	'taxonomies' => array('taxonomys'),
	'rewrite' => array(
		'slug' => '',
		'with_front' => true,
		'feeds' => true,
		'pages' => true
	)
));

関数リファレンス/register post type

ナオユ

カスタム投稿で投稿フォーマットを有効にするとプレビューが見れないなんて、なんか腑に落ちないよ~

とりあえず、これを追記すれば直るかも

投稿フォーマットを使いたい場合は、function.phpに次のコードを追記します。
プレビューURLから投稿フォーマットのパラメータを削除する「おまじない」です。

function post_format_parameter( $url ) {
    $url = remove_query_arg( 'post_format', $url );
    return $url;
}
add_filter( 'preview_post_link', 'post_format_parameter', 9999 );

こちらのサイトを参考にさせていただきました。
https://www.webantena.net/wordpress/preview-post-link-remove-post-format/

ゴリさん

とりあえず、この“おまじない”をコピペしときゃOKやで

コメントを残す

メールアドレスが公開されることはありません。

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

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

このサイトの管理者

ナオユ

Wordpress初心者向けにカスタマイズ方法やWEB制作のノウハウをポロッとまとめています。広告代理店→WEB制作会社→リモート勤務になり在宅ワークしながらアフィリエイトなど副業に挑戦中|子ども大好き新米パパ@H29男児|フラット35で実家を建て直し親と同居|仮想通貨投資(絶賛含み損w)