【发布时间】:2023-04-11 11:16:01
【问题描述】:
我正在构建一个网站,其中某些用户将是“高级”用户,而某些用户将是非高级用户。这两个角色都可以发帖,但在我们的帖子查询中,我们希望首先返回所有“高级”用户发布的帖子,CSS 类为“高级”,然后返回所有非高级帖子。
我需要以保留分页的方式这样做。
我有以下查询,可用于按用户角色返回帖子:
<?php $premiums = get_users( array( 'role' => 's2member_level1, administrator' ) );
$premium_ids = array();
foreach( $premiums as $premium )
$premium_ids[] = $premium->ID;
$posts = new WP_Query( array( 'author' => implode( ',', $premium_ids ), 'post_type' => 'classifieds', 'paged' => get_query_var('paged') ) );
if ( $posts->have_posts() ) : while ( $posts->have_posts() ) : $posts->the_post();
// The post title, content, etc, encase in a PREMIUM css class
endwhile;
endif;
wp_reset_postdata(); ?>
上面指定的两个角色是我们的“高级”角色,所以他们的所有帖子都应该首先返回。非高级角色使用 WordPress 中提供的“订阅者”角色。
对于非高级帖子,我打算进行第二次查询,根据需要更换角色,但我意识到这会破坏分页,或者至少阻止分页以传统方式工作。
因此,很明显我需要在一个查询中包含所有内容。
通过阅读以下帖子,我知道可以将两个查询合并为一个,但我不确定这是否是最好的方法。
https://wordpress.org/support/topic/multiple-queries-compiling-into-one-loop
因此,我在这里发布问题,看看是否有人知道一种方法来查询我们的高级用户,返回他们的帖子,然后查询非高级用户并返回他们的帖子,所有这些都在一个带有“高级”的查询中" 高级职位的课程和非高级职位的“非高级”课程。
我觉得这更像是一个 PHP 问题,而不是 WordPress 问题,所以我将此问题标记为 PHP 第一,WordPress 第二。
希望有人能提供帮助。
谢谢
【问题讨论】:
标签: php mysql wordpress pagination