「visningshus」と呼ばれるカスタム投稿タイプと、そのスラッグのあるページがあります。これは、そうあるべきです(必須)。
現在、「http://my-site.com/visningshus」には、そのタイプのすべての投稿がリストされています。代わりに、そのパーマリンクスラッグがあるページを表示したいです。
Wordpressに投稿タイプ名を優先させず、代わりにパーマリンクを作成させ、ページを表示させるにはどうすればよいですか?
「visningshus」と呼ばれるカスタム投稿タイプと、そのスラッグのあるページがあります。これは、そうあるべきです(必須)。
現在、「http://my-site.com/visningshus」には、そのタイプのすべての投稿がリストされています。代わりに、そのパーマリンクスラッグがあるページを表示したいです。
Wordpressに投稿タイプ名を優先させず、代わりにパーマリンクを作成させ、ページを表示させるにはどうすればよいですか?
回答:
最も簡単なのは、このCPTのアーカイブページを無効にすることです。
register_post_type( 'visningshus',
array(
[...]
'has_archive' => false,
[...]
)
);
その後、[設定]> [パーマリンク]でパーマリンクを更新することを忘れないでください
私は@Carlの投稿にコメントするのに十分な評判はありませんが、彼は正しい答えです(少なくとも、ページスラッグとカスタム投稿タイプスラッグを同じ状態に保ち、archive.phpファイルを使用しないこの状況に対して)
しかし、彼の答えはページネーションに誤りを与えるでしょう。ページネーションエラーを回避するには:
add_rewrite_rule('^visningshus/page/([0-9]+)','index.php?pagename=visningshus&paged=$matches[1]', 'top');
これは、ページネーションを見て、ページ番号を取得し、それから裏返して、一致するスラッグを持つページを使用するように強制し、ページ変数を挿入します。
これは、'has_archive' => false,
上記の投稿に加えて、目的の機能を実現するはずです。
他の人が述べたように、この変更を行った後、[設定]> [パーマリンク]にアクセスして、書き換えルールを必ずフラッシュしてください。
これが非常に長い間私を困惑させたのを知っているので、これが誰かを助けることを願っています。
ティエナ・ヘンリック!
あなたがする必要があるのは、すでに作成されたWordpress書き換えルールに書き換えルールを追加することだけだと思います。このコードスニペットをテーマのfunctions.phpに追加するか、別のページとして含める...
add_action('init', function () {
add_rewrite_rule('visningshus/?$','index.php?pagename=visningshus', 'top');
flush_rewrite_rules();
}, 1000);
flush_rewrite_rules();
するinit
たびに書き換えルールを変更しないでください。一度リロードしてから削除するか、管理ダッシュボードのパーマリンク設定に移動してパーマリンクを手動でフラッシュし、[変更を保存]をクリックしてください
対立を解決せずに解決しました。slug visningshusを使用してページを作成し、その中に必要なものを書き込みます。このページのIDに注意してください。
任意の方法でarchive-custom-post-type.phpテンプレートを作成およびカスタマイズします(ほとんどの場合、ページテンプレートを使用します)が、ループ部分を
$recent = new WP_Query("page_id=your-page-id");
while($recent->have_posts()) : $recent->the_post();
the_content();
endwhile;
その後、http: //my-site.com/visningshusにアクセスすると、正しいURLのページで管理されているコンテンツが表示されます。
動作することを教えてください。
投票は許可されていませんが、Carlsソリューションの場合、register_post_typeは
'has_archive' => false
シンプル。ただし、ページネーションの問題に直面したときは、
add_rewrite_rule
私にとってそれを修正したのは、アーカイブをfalseに設定するだけでなく、カスタム投稿タイプを設定するときにHierarchicalをfalseに設定することでした!
カスタム投稿タイプのスラッグのカスタム投稿タイプのコンテンツよりもページネーションを優先する一般的なソリューションを次に示します。
// prioritize pagination over displaying custom post type content
add_action('init', function() {
add_rewrite_rule(
'(.?.+?)/page/?([0-9]{1,})/?$',
'index.php?pagename=$matches[1]&paged=$matches[2]',
'top'
);
});
このスニペットを追加する以外に、カスタム投稿タイプが archive = false
最後に、Permalinks設定ページの設定>パーマリンク(/wp/wp-admin/options-permalink.php)に移動し、現在の設定を保存してページのリンク構造を更新します。