web-dev-qa-db-ja.com

期待どおりにwp_list_pagesにcptが表示されない

私は '欠員'と呼ばれるCPTを持っていますここにそれを登録するコードです:

function register_cpt_vacancy() {
    $args = array('labels' => $labels, 'hierarchical' => false, 'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'revisions'), 'taxonomies' => array('departments'), 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_nav_menus' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'has_archive' => true, 'query_var' => true, 'can_export' => true, 'rewrite' => true, 'capability_type' => 'post');
    register_post_type('vacancy', $args);
}

テンプレートフッターでこれをやろうとしています:

wp_list_pages('post_type=vacancy');

どれを - ドキュメントを読むことから 私はうまくいくと思った。

独自のクエリスタイルやメニュースタイルを作成する以外にこれを行う方法はありますか?この空席の一覧は、wp_nav_menuで呼び出される他の2つのwpメニュー間のメニューとして表示されるので、私はそれがリスト構造になっていることを望みます。

さまざまなアプローチに関する支援や提案があれば歓迎しました:)

2

wp_list_pagesドキュメント には、次のように記載されています。

特定のカスタム投稿タイプが本質的に階層型の場合は、wp_list_pages()を使用してそのカスタム投稿タイプのメンバーを一覧表示できます。

自分のコードに基づいて、wp_list_pages()で使用しようとしているCPTはnot階層です。

したがって、2つの解決策があります。

1.カスタム投稿タイプを変更する

'hierarchical' => true'capability_type' => 'page'を設定して、投稿タイプを階層的にする(ページのように)。

2.別の機能を使う

次のようなものを使うことをお勧めします。

$vacancy_menu = get_posts( 'post_type=vacancy' );

if( $vacancy_menu ) : ?>
    <ul>
    <?php foreach( $vacancy_menu as $menu_item ) : 
      setup_postdata( $menu_item );?>
        <li><a href="<?php the_permalink(); ?>" title="Go to <?php the_title(); ?>"> <?php the_title(); ?></a></li>
    <?php endforeach; ?>
    </ul>
<?php endif; ?>

ご希望の場合は、これを独自の "wp_list_posts()"を作成する関数として簡単に設定することも、wp_nav_menu()のHTMLと一致するように設定することもできます。

また、リンクへの "現在の"クラスの適用方法に関する情報を含む同様の説明については、 この例 を参照してください。

4
bybloggers