「投稿ページ」設定を設定するのと同じ方法で投稿リストを生成するページを選択できるようにする、wordpress でカスタム投稿タイプ プラグインをセットアップしようとしています。投稿タイプは、ページ コンテンツではなくアーカイブ ページです。
セットアップを使用するページを選択するオプションがあり、ページ スラッグをカスタム投稿タイプの書き換えスラッグとして使用します。ページ コンテンツの代わりにアーカイブを表示する方法がわかりません。
「投稿ページ」設定を設定するのと同じ方法で投稿リストを生成するページを選択できるようにする、wordpress でカスタム投稿タイプ プラグインをセットアップしようとしています。投稿タイプは、ページ コンテンツではなくアーカイブ ページです。
セットアップを使用するページを選択するオプションがあり、ページ スラッグをカスタム投稿タイプの書き換えスラッグとして使用します。ページ コンテンツの代わりにアーカイブを表示する方法がわかりません。
WordPressテンプレート階層に基づいて、タイプ Foo のカスタム投稿を使用していると仮定して、アーカイブ コードを に配置しますarchive-foo.php
。
おそらくより良い解決策がありますが、これはトップレベルのページで機能します。基本的に、ページのスラッグが変更されているかどうかを確認し、変更されている場合は書き換えルールをフラッシュします。
add_action( 'init', 'faqmgr_create_post_type' );
function faqmgr_create_post_type() {
$options=get_option('faqmgr_options', array('faq_page'=>0, 'faq_slug'=>'faq'));
$updated=false;
$tpost=get_post( $options['faq_page'], OBJECT );
if(is_null($tpost)){
$options=array('faq_page'=>0, 'faq_slug'=>'faq');
$updated=true;
update_option('faqmgr_options', $options);
}else{
if($options['faq_slug']!=$tpost->post_name){
$options['faq_slug']=$tpost->post_name;
$updated=true;
}
}
register_post_type( 'faq',
array(
'labels' => array(
'name' => __( 'FAQs' ),
'singular_name' => __( 'FAQ' ),
'add_new_item' => __( 'Add FAQ' ),
'edit_item' => __( 'Edit FAQ' ),
'new_item' => __( 'New FAQ' ),
'view_item' => __( 'View FAQ' ),
'search_items' => __( 'Search FAQs' )
),
'public' => true,
'exclude_from_search'=>true,
'has_archive' => true,
'rewrite' => array(
'slug' => $options['faq_slug'],
'with_front' => false
),
'supports' => array(
'title',
'editor',
'thumbnail'
)
)
);
if($updated=true;){
flush_rewrite_rules( false );
}
}