WordPress カスタム投稿タイプのアーカイブと詳細ページを利用しない方法(HTTPステータスコード404を返す)

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

コメント

タイトルとURLをコピーしました