需要wp_Query来返回所有子代和孙代

时间:2019-12-11 作者:Benlov

我在一个网站上工作,有三个不同的主要“TopLevel”部分,它们是网站的顶级家长。

每个toplevel节都有子节和子节,并且需要列出每个子节的前4个最受欢迎的子节页面。我目前正在使用metakey收集最受欢迎的页面,这非常有效。然而,我使用的wp\\u查询只返回直接的子项。

get\\u页面在这里不起作用,因为元键排序不起作用,也不允许我限制为仅4页。这是我当前的代码。

<?php $popularpost = new WP_Query( array( \'posts_per_page\' => 4, \'post__not_in\'=> array(220), \'meta_key\' => \'wpb_post_views_count\', \'orderby\' => \'meta_value_num\', \'order\' => \'DESC\', \'post_type\' => \'page\', \'post_parent\' => $parentid  ) );
while ( $popularpost->have_posts() ) : $popularpost->the_post(); ?>
                   <a href="<?php the_permalink(); ?>" class="cta"><?php the_title(); ?></a>
<?php endwhile;
                       wp_reset_postdata(); ?>

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

好的,我找到了一个解决方案。我首先遍历并获取所有子页面ID,创建一个数组,并在中使用post\\u parent\\uu

<?php $parentarray = array($parentid);
                            $parentposts = new WP_Query( array( \'posts_per_page\' => -1, \'post_type\' => \'page\', \'post_parent\' => $parentid ) );
                            while ( $parentposts->have_posts() ): $parentposts->the_post(); ?>
                                <?php $parentarray[] = get_the_id(); ?>
                        <?php endwhile; 
                       wp_reset_postdata(); ?>

<?php $popularpost = new WP_Query( array( \'posts_per_page\' => 4, \'post__not_in\'=> array(220), \'meta_key\' => \'wpb_post_views_count\', \'orderby\' => \'meta_value_num\', \'order\' => \'DESC\', \'post_type\' => \'page\', \'post_parent__in\' => $parentarray  ) );
while ( $popularpost->have_posts() ) : $popularpost->the_post(); ?>
                   <a href="<?php the_permalink(); ?>" class="cta"><?php the_title(); ?></a>
<?php endwhile;
                       wp_reset_postdata(); ?>

相关推荐

如何在wp-Query中比较不同的时间戳以获取事件自定义帖子类型?

我有一个带有自定义元数据库的自定义帖子类型(as seen on wptheming.com) 并且希望进行查询以显示即将发生的事件,例如在侧边栏中,过去的日期被忽略。但我需要一个当前时间的值来和事件开始时间进行比较。现在我从current_time(\'mysql\') 看起来是这样的:2012-02-16 13:15:31元的开始时间如下所示:201108121100如何使这两个日期具有可比性?我可以在查询中执行吗?或者是否有其他解决方案?以下是我到目前为止的查询(值留空,时间戳回显):<?ph