我在一个网站上工作,有三个不同的主要“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(); ?>
最合适的回答,由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(); ?>