web-dev-qa-db-ja.com

wp_list_pagesは階層型のカスタム投稿タイプでは機能しません

私はこれを理解しようとしている私の机のすべての午後に頭をぶつけていました。カスタム投稿タイプをすべて設定し、階層を「true」に設定して、親を割り当ててバックエンドで関係を確認できます。これは素晴らしいです。

私の特別な新しい投稿タイプの子供(および兄弟)をリストしたい場合を除いて。このコードを見つけました

<?php if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) { ?>
<ul>
    <?php echo $children; ?>
</ul>
<?php } ?>

私がそれをページのページテンプレートに入れたとき、これは完璧に機能します。しかし、カスタム投稿テンプレートにはスクワットが返されます。私は "$ post-> post_parent)"が問題になるかもしれないと思った - しかしそれはそうではない:

 <h1 class="page-title"><a href="<?php echo get_permalink($post->post_parent) ?>" title="<?php printf( __( 'Return to %s', 'your-theme' ), wp_specialchars( get_the_title($post->post_parent), 1 ) ) ?>" rev="attachment"><span class="meta-nav">&laquo; </span><?php echo get_the_title($post->post_parent) ?></a></h1>

(添付ファイルのテンプレートから解除された)親にバックリンクを表示します。 - wp_list_pagesと関係があるのでしょうか。多分それは何か他のもの?私はどんなアイデアにも感謝します。

前もって感謝します、

マーティン

2
Martin

名前の通り、wp_list_pages()はページでの使用を意図しています。 「ページページ」のように。これは内部でget_pages()を使用します。これはデフォルトでpageになるpost_type引数を持ちます。

私はこれが非ページで機能することになっていることはまったくわかりませんが、あなたはあなたのカスタム投稿タイプをpost_type引数として渡すことを試みることができます。

3
Rarst

私は非常によく似たことをやろうとしています。これが私がこれまでに手に入れたもので、カスタム投稿タイプの "product"を使用しています。

$children = wp_list_pages("sort_column=menu_order&title_li=&child_of=".$post->post_parent."&post_type=productE&echo=0")

これによりリストが生成されます。残念ながら、リンクはsiteurl.com/parent-product/child-pageとして生成されています

編集画面からビューを実行すると、目的のURLがsiteurl.com/?product=child-pageとして表示されます。

私は More Types プラグインを使用しているので、カスタム投稿タイプのパーマリンクベースをproductに設定します。

これは私にとってトリックでした。

1
user2623

うーん...カスタム投稿タイプにwp_list_pagesを使用する場合のもう1つの考慮事項は、カスタム投稿タイプを 'capability_type' => 'page' NOT 'post'に登録することです。

    register_post_type( 'mycpt',
    array(
        'labels' => array(
            'name' => __( 'MyCPTs' ),
            'singular_name' => __( 'MyCPT' )
        ),
    'public' => true,
    'show_ui' => true,
    'show_in_nav_menus' => true,  
        'capability_type' => 'page',
        'menu_position' => 20,  
        'hierarchical' => true,  
        'rewrite' => true,  
        'supports' => array('title','editor','page-attributes')

    )
);
flush_rewrite_rules();
0
user2906