カスタム投稿タイプの単一ページが404エラーを返す


17

というカスタム投稿タイプがありslideます。コンテンツといくつかのカスタムフィールドがあります。ユーザーがスライドの単一ページのリンクをクリックしたときに、WPsingle.phpテーマまたはsingle-slide.phpテーマを表示させたい。私が抱えている問題は、単一のスライドページを見たいときに、WPが404エラーをスローすることです。

ここに私のコードがありfunctions.phpます:

function create_slide_post_type() {
    $labels = array(
        'name'               => _x( 'اسلایدها', 'i2sa' ),
        'singular_name'      => _x( 'اسلاید', 'i2sa' ),
        'menu_name'          => _x( 'اسلایدها', 'i2sa' ),
        'name_admin_bar'     => _x( 'اسلاید', 'i2sa' ),
        'add_new'            => _x( 'افزودن', 'i2sa' ),
        'add_new_item'       => __( 'افزودن اسلاید جدید', 'i2sa' ),
        'new_item'           => __( 'اسلاید جدید', 'i2sa' ),
        'edit_item'          => __( 'ویرایش اسلاید', 'i2sa' ),
        'view_item'          => __( 'نمایش اسلاید', 'i2sa' ),
        'all_items'          => __( 'همه اسلایدها', 'i2sa' ),
        'search_items'       => __( 'جستجوی اسلایدها', 'i2sa' ),
        'parent_item_colon'  => __( 'اسلایدهای مادر:', 'i2sa' ),
        'not_found'          => __( 'اسلایدی پیدا نشد.', 'i2sa' ),
        'not_found_in_trash' => __( 'اسلایدی در زباله دان پیدا نشد.', 'i2sa' )
    );

    $args = array(
        'labels'             => $labels,
        'description'        => "اسلایدهای شرکت i2sa",
        'public'             => true,
        'exclude_from_search'=> true,
        'publicly_queryable' => false,
        'show_in_nav_menus'  => false,
        'menu_icon'          => 'dashicons-images-alt2',
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'slide' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => null,
        'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
    );
    register_post_type( 'slide', $args );
    flush_rewrite_rules();
}
add_action( 'init', 'create_slide_post_type' );

回答:


41

カスタム投稿タイプを登録publicly_queryableするtrueときに引数をに設定する必要があります。

flush_rewrite_rules()ページを1回または2回追加して更新し、すぐに削除します。flush_rewrite_rules()コーデックスの規定の下にない限り、あなたは保管すべきではありません。

これは高価な操作なので、どうしても必要な場合にのみ使用してください


1
ああ、それもここで働いた。それは完全に非自明でした。ありがとうございました!
トビーDeshane

私のために働いた!ありがとう!
ジェームズハウス

はい!最後に両方を行った後、それは働いた。
エリック

15

ダッシュボード->設定->パーマリンクページから書き換えルールをフラッシュします。[保存]ボタンをクリックして、スライドの詳細ページを確認します。今すぐ動作します。それ以外の場合flush_rewrite_rules()は、create_slide_post_type()関数にこのコードを記述できます。コーデックスを見る


2
Permlinksの[保存]ボタンをクリックするとうまくいきました。サイトを運用サーバーに移動した後、すべてのカスタム投稿タイプのリンクが壊れていました。これで修正されました。ありがとう!
cbloss793

+1パーマリンクで[保存]をクリックするだけでもうまくいきました。
-MarsAndBack

パーマリンクの保存は機能します。しかし、量産コード(つまり内)にflush_rewrite_rules()after register_post_type()呼び出しを追加しないでくださいcreate_slide_post_type。プラグインアクティベーションフックまたはオプション値を使用して、新しい投稿タイプを追加したことを確認します
Philipp

6

パーマリンクを更新します。[管理]-> [設定]-> [パーマリンク]に移動し、[保存]をクリックします。これはパーマリンクを更新し、特に書き換えを変更する場合に役立ちます( 'rewrite' => array( 'slug' => 'slide')、)


1

仮想ホストApacheで以下を設定する必要があります。

    <Directory /var/www/html/wordpress>
            AllowOverride All
    </Directory>

次に、パーマリンクを更新します:wp-admin-> settings-> permalinks。それは私のために働いた。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.