web-dev-qa-db-ja.com

404ページにリダイレクトする単一のカスタム投稿タイプページ

私は以下のように投稿タイプを宣言しました:

 $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'query_var' => true,
        'rewrite' => array('slug' => 'agences'),
        'capability_type' => 'post',
        'has_archive' => true,
        'hierarchical' => false,
        'menu_position' => 5,
        'taxonomies' => array('brands', 'country'),
        'supports' => array('title', 'editor', 'author', 'thumbnail', 'custom-fields')
    );

    register_post_type('destinations', $args);

最初はsingle-agences.phpを使用してこの投稿タイプの単一ページにアクセスできましたが、現在は404にリダイレクトされています。

私は他の答えをチェックしました、そしてそれが一般的な間違いであることがわかりました、しかし他の答えはこれを解決することができませんでした。どんな助けでも素晴らしいでしょう。

4
Deepak jha

それはプラグイン "Remove taxonomy base slug"によるものです。それはCPTの「目的地」の基本スラグと矛盾していました。スラッグをチェックして手動で適切な場所にリダイレクトするには、add_rewrite_ruleを使用しなければなりませんでした

0
Deepak jha

register_post_type()は書き換えルールをフラッシュしないので、新しく登録されたCPTは404を示します。手動でも自動でも、それはあなた次第です。

手動で

/wp-admin/に行き、それからSettings"Permalinksに行き、そしてただヒットしてください。 Save Changes 書き換えルールをフラッシュするボタン。

自動的に

flush_rewrite_rules() functionを使って書き換えルールをフラッシュすることができます。しかしregister_post_type()initフックで呼び出されるので、initフックが起動するたびに起動します。コーデックスが言っているのと同じこと:

WordPressの書き換えルールを自動的にフラッシュすることができるので、この関数はカスタム投稿タイプで使用すると便利です(通常、新しいカスタム投稿タイプの場合は手動で行う必要があります)。ただし、これはコストのかかる操作なので、絶対に必要な場合にのみ使用してください。

そのため、一度起動するものに物事をフックし、必要なときにだけルールをフラッシュするほうがよいのです。として @ cybmetaはすでにそれを示している あなたに。しかし、@ bainternetのアプローチに従うこともできます。

/**
 * To activate CPT Single page
 * @author  Bainternet
 * @link http://en.bainternet.info/2011/custom-post-type-getting-404-on-permalinks
 * ---
 */
$set = get_option( 'post_type_rules_flased_mycpt' );
if ( $set !== true ){
    flush_rewrite_rules( false );
    update_option( 'post_type_rules_flased_mycpt', true );
}

彼はあなたの投稿タイプのためだけにoptionsテーブルに値を保存しています。そして値がそこになければ、彼は書き換えルールをフラッシュしています。それがそこにあるならば、彼はそれをしていません。

しかし、注意してください、実際には毎回db呼び出しを行います(キャッシュされていない場合)。ですから、テーマの場合は after_setup_theme 、プラグインの場合は register_activation_hook というコードをフックすることをお勧めします。

ボーナス

書き換えルールをデバッグしている間、これらのようなプラグインは非常に役に立ちます。

11
Mayeenul Islam