カスタムの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
を認識しておらず、追加の引数が必要であることを確認しましたが、満足するように上記のコードを編集する方法はわかりません。私はいくつかの編集を試みたが失敗した。
何かアドバイスや提案は大歓迎です!
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 からの関連ページも役に立つかもしれません。