WordPress で広告管理用のカスタム投稿タイプを追加した場合など、管理画面で広告データ管理はしたいけどフロントでアーカイブページも詳細ページも利用しないことがあります。
今回はカスタム投稿タイプの追加方法とアーカイブページ/詳細ページでHTTPステータスコード404を返す方法を書いて行きます。
広告用カスタム投稿タイプ追加
アーカイブページを使用しないため “has_archive” の設定を “false” にしています。こうすることでアーカイブページは生成されませんので、http://example.com/ads のようなURLにアクセスしてもHTTPステータスコード404が返ってきます。
<?php
/**
* カスタム投稿タイプ「広告:ads」追加設定
*/
function create_post_type_ads()
{
$labels = array(
'name' => _x('広告', 'post type general name'),
'singular_name' => _x('広告', 'post type singular name'),
'add_new' => _x('広告を追加','ads'),
'add_new_item' => __('新しい広告を追加'),
'edit_item' => __('広告を編集'),
'new_item' => __('新しい広告'),
'view_item' => __('広告を表示'),
'search_items' => __('広告を探す'),
'not_found' => __('広告はありません'),
'not_found_in_trash' => __('ゴミ箱に広告はありません'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => false, /* フロント公開設定 */
'show_ui' => true,
'rewrite' => array('slug'=>'ads','with_front'=>false),
'query_var' => true,
'has_archive' => false, /* アーカイブ生成 */
'hierarchical' => true,
'capability_type' => 'post',
'publicly_queryable' => true, /* 投稿画面に表示 */
'supports' => array('title', 'editor','thumbnail', 'author'),
'taxonomies' => array('ads_cat'),
'menu_icon' => 'dashicons-edit-large', //アイコン
);
register_post_type('ads',$args);
// 広告カテゴリー
$args = array(
'label' => '広告カテゴリー',
'public' => true,
'show_ui' => true, /* 項目の表示 */
'query_var' => true,
'hierarchical' => true, /* 階層化あり */
'update_count_callback' => '_update_post_term_count',
'rewrite' => array('slug'=>'ads/category','with_front'=>false),
);
register_taxonomy('ads_cat','ads',$args);
}
add_action( 'init', 'create_post_type_ads' );
※カスタム投稿タイプ追加後は、管理画面のパーマリンク設定の更新が必要です
詳細ページの404設定
詳細ページ用の “single-ads.php” を用意して以下のようにHTTPステータスコード404を返し404ページ用のテンプレートを読み込むように設定します。
<?php
header("HTTP/1.1 404 Not Found");
require(get_theme_file_path().'/404.php');
exit;
動作環境情報
エックスサーバー(x10) PHP 7.3.14 MySQL 5.7 WordPress 5.3.2
コメント