web-dev-qa-db-ja.com

カスタム投稿が表示されないのはなぜですか(404エラー/ページが見つかりません)

新しいwpをインストールしました。 TwentyTwelveテーマに基づいて新しい子テーマを作成しました。子テーマfunctions.phpで、 "news"という新しいカスタム投稿を作成しました。 「ニュース」に2つの投稿を追加しましたが、どちらかを表示すると、「ページが見つかりません」というエラーが表示されます。スクリーンショットを参照してください。 http://pasteboard.co/dtIOK6g.jpg

私は投稿が表示されることを期待していますが、404ページを得ています。なぜ。

更新(私の質問を明確にするため):インストールから、私は次のことを除けば、ほとんど作業を行っていません。

  • 新しい子供のテーマを追加しました(の)
  • 新しい子テーマを適用しました
  • 子テーマでfunctions.phpの作成を更新し、このコードをここに追加して新しいカスタム投稿を作成しました( http://Pastebin.com/DKny8QH1
  • WP adminに、ニュースの下に2つの新しい投稿を作成しました(上記の新しいカスタム投稿)。
  • 私が投稿にアクセスしようとすると、404が表示されます(上のスクリーンショットを参照)。ただし、通常作成された投稿にはアクセスできます。

ありがとう

RESOLVED:これは本当に変ですが解決しました。パーマリンクの設定では、既に選択されていても「ポスト名」オプションを選択し直す必要があるようです。このオプションを選択しても私の問題は解決しました。混乱してすみません。

  • 設定>パーマリンクに行きました
1
Abs

解決済み:これは本当に変ですが、解決しました。パーマリンクの設定では、既に選択されていても「ポスト名」オプションを選択し直す必要があるようです。このオプションを選択しても私の問題は解決しました。混乱してすみません。

設定>パーマリンクに行きました

2
Abs

実際、これは一般的な問題です。

カスタム投稿タイプを追加すると、WordPressに新しい書き換え規則も登録されます。 しかし、WordPressに認識させるためには、登録後に書き換えルールをフラッシュする必要があります。

プラグインの場合、これはCPT登録をinit(それで使えるので)とプラグインのアクティベーションフックの両方にフックすることで修正されています。その後、プラグインアクティベーションフック内で、手動でflush_rewrite_rules()を呼び出して設定をリセットします。

類似のテーマの有効化/無効化の設定はないため、テーマをいつロードしたかを設定するオプションを使用できます。例えば:

function my_theme_register_cpt() {
    $args = array(
        // ... your initialization stuff
    );

    register_post_type( 'news', $news );
}
add_action( 'init', 'my_theme_register_cpt' );

function my_theme_deactivate() {
    delete_option( 'my_theme_active' );
}
add_action( 'switch_theme', 'my_theme_deactivation' );

$is_active = get_option( 'my_theme_active' );
if ( 'set' !== $check ) {
    my_theme_register_cpt();
    flush_rewrite_rules();

    add_option( 'my_theme_active', 'set', '', 'no' );
}

手短に。このコードは:

  • 通常どおり、CPTをinitに登録します。
  • テーマを変更すると、テーマがアクティブであることを示す保存値が消去されます。
  • テーマがアクティブになり、この保存された値が設定されていない場合、テーマは(再び)あなたのCPT登録コードを起動し、すぐに書き換えルールをフラッシュします。その後、flush_rewrite_rules()を複数回起動しないように、格納された値を設定します。
2
EAMann