web-dev-qa-db-ja.com

カスタム投稿タイプの親ページの子ページを表示する

カスタムのpost_typeページの子ページを表示しようとしています。標準のWordPressの "pages" post_typeにはうまく機能するショートコードを見つけましたが、カスタム投稿タイプではうまくいきません。

これが私のオーバーライド関数ファイルに入れたショートコードコードです。

add_shortcode( 'my_childpages', 'my_list_child_pages' );  

function my_list_child_pages() { 
global $post;
if ( is_page() && $post->post_parent )
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
else
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
if ( $childpages ) {
    $string = '<ul>' . $childpages . '</ul>';
}
return $string; 
}

[my_childpages]というショートコードを子を持つ「ページ」post_typeに配置すると、すべてのサブページがリンクリストに正しく表示されます。しかし、私がカスタムのpost_type(例えば 'essays')を追加したとしてもそうではありません。

他の場所では、おそらくコードがカスタムの$post_typeを認識しておらず、追加の引数が必要であることを確認しましたが、満足するように上記のコードを編集する方法はわかりません。私はいくつかの編集を試みたが失敗した。

何かアドバイスや提案は大歓迎です!

1
Benjamin Doyle

page自体はカスタムの投稿タイプです。ページ編集画面を開くと、これがわかります。あなたのURLは次のようになります。

www.example.com/wp-admin/edit.php?post_type=page

これはあなたがpage投稿タイプにいるということです。

今すぐあなたのコードについては、あなたの条件付きの最初の条件はあなたがpageポストタイプにいるかどうかを決定します。 elseセクションでは、引数としてpost_typeを設定することもできます。

$childpages = wp_list_pages( 'post_type=essay&sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );

ただし、カスタム分類法を登録するときは、階層をtrueに設定する必要があります。

'hierarchical'=> true,

この質問 を見てください。これには有益な情報がいくつかあります。 code reference からの関連ページも役に立つかもしれません。

0
Jack Johansson