我正在尝试在“作业”帖子类型存档页面上排序主查询。我想通过meta\\u键对它们进行排序,以便首先显示具有值(即被选中为特征)的那些。这是我目前的情况。。
function featured_jobs_order( $orderby ) {
if( !is_post_type_archive(\'jobs\') ) {
return $orderby;
}
global $wpdb;
$orderby = $wpdb->postmeta . \'.meta_value DESC, \' . $orderby;
return $orderby;
}
add_filter(\'posts_orderby\', \'featured_jobs_order\' );
function change_jobs_query( $query ) {
if ( is_post_type_archive( \'jobs\' ) ) {
$query->set( \'meta_key\', \'featured\' );
return;
}
}
add_action( \'pre_get_posts\', \'change_jobs_query\', 1 );
目前,它只带回了那些有特色的,而没有带回其余的。
干杯,史蒂夫
SO网友:Andrew Odri
我建议您不要试图通过functions.php
, 尝试为名为的作业帖子类型创建存档页archive-jobs.php
在模板目录中。如果它是这样命名的,WordPress will associate it as the archive page 用于自定义帖子类型。
然后,修改该页面上的循环查询:(参见示例WP_Query Order & Orderby Parameters)
<?php query_posts( array( \'post_type\' => \'jobs\', \'orderby\' => \'meta_value\', \'meta_key\' => \'featured\' ) ); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; else: ?>
<p>Sorry, no posts matched your criteria.</p>
<?php endif; ?>