将随机添加到 Wordpress Query


Adding random to Wordpress Query

我有一个现有的Wordpress页面,并用于显示下面pre_get_post功能的页面。查询在网站中筛选自定义帖子类型"branchenbuch"的所有帖子,并将其排序为字段 profiltyp(有徽标的人和没有徽标的人)这样,所有记录都按此特定顺序显示(首先是有徽标的人)。现在在这些结果(带有徽标的人)中,我还希望随机显示结果,并不总是首先出现相同的帖子。

目前这是我的功能.php:

add_action( 'pre_get_posts', 'custom_post_type_archive' );
function custom_post_type_archive( $query ) {
if( $query->is_main_query() && !is_admin() && is_post_type_archive( 'branchenbuch' ) ) {
  $query->set( 'meta_key', 'profiltyp' );
$query->set( 'orderby', 'meta_value' );
$query->set( 'order', 'DESC' );
    }
}

我不知道该怎么做?感谢您的帮助

我不确定我是否理解你的问题...但您可以使用'orderby' => 'rand'在WordPress中随机排序查询结果:

if( $query->is_main_query() && !is_admin() && is_post_type_archive( 'branchenbuch' ) ) {
    $query->set( 'meta_key', 'profiltyp' );
    $query->set( 'orderby', 'rand' );
}

阅读更多关于法典中orderby选项的信息。

使用代码

获取您需要显示在数组顶部的所有选定帖子,让我们说$allowed_posts = array(121,233,144,900);

$query->set( 'post__in', $allowed_posts );
$query->set( 'meta_key', 'profiltyp' );
$query->set( 'orderby', 'rand' );