显示自定义发布类型父页面的子页列表

时间:2018-05-17 作者:Marifer Villarroel

我试图在父页面上显示自定义页面的子页面。我发现一个缩写代码对于标准WordPress post\\u类型的“页面”非常有效,但不适用于自定义发布类型。

这是我在函数中输入的简短代码。php文件:

function v_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;

}

add_shortcode(\'v_childpages\', \'v_list_child_pages\');
如果我将快捷码[v\\u childpages]放在带有子页面的post\\u类型“页面”上,它会成功显示链接列表中的所有子页面。但如果我将其添加到自定义的post\\u类型中,则情况并非如此。

欢迎您提出任何建议,谢谢!

2 个回复
最合适的回答,由SO网友:Marifer Villarroel 整理而成

我终于解决了我遇到的问题。

else 第一节设置post_type 作为参数:

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

SO网友:WebElaine

代码的第三行指定page 通过检查is_page(). 您可以将其更改为is_singular(\'your-post-type\') 让它运行,然后在您的呼叫中wp_list_pages() 您还需要添加post_type 参数,以便该部分代码知道要查找什么。

所以,要让这个短代码在页面和您的特定CPT上都起作用,请在下面的两个地方输入您的帖子类型的注册名称uve_courses 出现:

function v_list_child_pages() { 
    global $post;
    // for Pages with a parent
    if ( is_page() && $post->post_parent ) {
        $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->post_parent . \'&echo=0\' );
    // for individual CPTs with a parent
    } elseif(is_singular(\'uve_courses\') && $post->post_parent ) {
        $childpages = wp_list_pages( \'post_type=uve_courses&sort_column=menu_order&title_li=&child_of=\' . $post->ID . \'&echo=0\' );
    }
    if ( $childpages ) {
        $string = \'<ul>\' . $childpages . \'</ul>\';
    }
    return $string;
}
add_shortcode(\'v_childpages\', \'v_list_child_pages\');
如果您有其他的CPT,您想让它工作,您将需要添加其他CPTelse 传递这些post类型的子句。

结束

相关推荐

如何在不编辑php文件的情况下使页面只显示特定类别的帖子

有没有办法让页面只显示特定类别的帖子摘录列表,而不编辑Wordpress的php文件?我正在帮助那些以后无法编辑它并使其在Wordpress更新后正常工作的人,并希望确保它的简单性。首选插件。到目前为止还没有发现任何东西。