子自定义帖子类型列表列出了所有自定义帖子类型

时间:2013-12-02 作者:luke

我的一些页面有一些自定义帖子类型的“帖子”作为子帖子。在这些页面上,我想列出所有子帖子。因此,我有以下代码:

<?php
$page_id = get_queried_object_id();
function subpage_peek($parent_id) {
    // reset the query, just to be sure
    wp_reset_postdata();
    //query subpages
    $args = array(
                 \'orderby\' => \'menu_order\',
                 \'sort_order\' => \'ASC\',
                 \'hierarchical\' => 0,
                 \'post_parent\' => $parent_id,
                 \'post_type\' => \'kuenstler\'
    );
    $subpages = new WP_query($args);

    // create output
    if ($subpages->have_posts()) :
        $output = \'<ul>\';
        while ($subpages->have_posts()) : $subpages->the_post();
            $output .= \'<li><a href="\'.get_permalink().\'">\'.get_the_title().\'</a></li>\';
        endwhile;
        $output .= \'</ul>\';
    else :
        $output = \'<p>No subpages found.</p>\';
    endif;

    // reset the query
    wp_reset_postdata();

    // return something
    return $output;
}
echo subpage_peek($page_id);
?>
为什么这会输出自定义帖子类型的所有帖子?

更新#1这是我的解决方案,它可以工作:

<?php
  wp_reset_postdata();
  global $post;
  $post = get_post(get_the_id());
  $child_posts = types_child_posts(\'kuenstler\');
  foreach ($child_posts as $child_post) {
    echo \'<li><a href="\'.get_permalink($child_post->ID).\'">\'.get_the_title($child_post->ID).\'</a></li>\';
  }
?>
如果我当然希望上面的代码出现在内容正文中,但也希望出现在列出所有这些子帖子的几个子导航中,有人知道我必须使用哪种重置吗?目前,主循环(见上文)工作正常,但在我的四个子导航中,没有列出第x页的子页面,而是列出了主循环的子页面。

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

我的最终解决方案:

<?php
/**
  Modified function from wp types with capability of choosing post_status
  Originally located here: plugins/types/embedded/functions.php lines 319-342
 */
function mod_wpcf_pr_post_get_has($post_id, $post_type_q = null, $post_status) {
    $post_type = get_post_type($post_id);
    $has = array_keys(wpcf_pr_get_has($post_type));
    $add = is_null($post_type_q) ? \'&post_type=any\' : \'&post_type=\' . $post_type_q;
    $posts = get_posts(\'numberposts=-1&post_status=\' . $post_status . \'&meta_key=_wpcf_belongs_\'
            . $post_type . \'_id&meta_value=\' . $post_id . $add);

    $results = array();
    foreach ($posts as $post) {
        if (!in_array($post->post_type, $has)) {
            continue;
        }
        $results[$post->post_type][] = $post;
    }
    return is_null($post_type_q) ? $results : array_shift($results);
}

$children = mod_wpcf_pr_post_get_has($id, $cpt_slug, \'publish\');
foreach ($children as $child_post) {
  setup_postdata($child_post);
  if(is_single($child_post->ID) ) { $current = \' class="current"\'; }
  echo \'<li><a href="\'.get_relative_permalink($child_post->ID).\'"\'.$current.\'>\'.get_the_title($child_post->ID).\'</a>\';
}
wp_reset_postdata();
?>
我希望我能在这方面帮助一些人。

SO网友:Milo

我觉得你很困惑WP_Query 使用分类参数。WP_Query 没有child_of 参数,使用post_parent. 和sort_column 应该是orderby.

结束

相关推荐

分页不使用自定义wp_Query

我正在尝试制作一个自定义搜索插件,但分页不起作用(它显示的页码正确,但功能不正常)。搜索插件的相关部分(来自主功能) $blog_url = get_bloginfo(\'url\'); $form = <<<EOH <div id=\"sbc\"> <form method=\"get\" action=\"{$blog_url}\" id=\"ss-search\"> &l