新しいwpをインストールしました。 TwentyTwelveテーマに基づいて新しい子テーマを作成しました。子テーマfunctions.phpで、 "news"という新しいカスタム投稿を作成しました。 「ニュース」に2つの投稿を追加しましたが、どちらかを表示すると、「ページが見つかりません」というエラーが表示されます。スクリーンショットを参照してください。 http://pasteboard.co/dtIOK6g.jpg
私は投稿が表示されることを期待していますが、404ページを得ています。なぜ。
更新(私の質問を明確にするため):インストールから、私は次のことを除けば、ほとんど作業を行っていません。
ありがとう
RESOLVED:これは本当に変ですが解決しました。パーマリンクの設定では、既に選択されていても「ポスト名」オプションを選択し直す必要があるようです。このオプションを選択しても私の問題は解決しました。混乱してすみません。
解決済み:これは本当に変ですが、解決しました。パーマリンクの設定では、既に選択されていても「ポスト名」オプションを選択し直す必要があるようです。このオプションを選択しても私の問題は解決しました。混乱してすみません。
設定>パーマリンクに行きました
実際、これは一般的な問題です。
カスタム投稿タイプを追加すると、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' );
}
手短に。このコードは:
init
に登録します。flush_rewrite_rules()
を複数回起動しないように、格納された値を設定します。