如何避免函数与单个帖子之间的冲突

问题描述 投票:0回答:1

我正在使用以下功能来更改帖子的显示顺序:

function wpse139657_orderby($query){ 

    $query->set( 'orderby', 'meta_value' ); 
    $query->set( 'order', 'DESC' ); 
    $query->set( 'meta_key', 'book_release_date' ); 
    $query->set( 'meta_type', 'NUMERIC' );

        if (is_admin() || $query->query_vars['post_type'] != 'book') return $query;
} 
add_filter('pre_get_posts','wpse139657_orderby');

...但是看起来好像与单个帖子产生了冲突,实际上,在我将上述功能添加到博客中之后,以下查询就停止了工作。

$images = get_attached_media('image');
$featured_image_id = get_post_thumbnail_id();
if ( has_post_thumbnail() ) {
    unset($images[ $featured_image_id ] );
}
$ximage =  wp_get_attachment_image_src( key($images),'medium');
echo '<img src="' . $ximage[0] . '">';

有什么方法可以编辑上面的第一个代码(功能)并进行设置,以免干扰单个帖子页面?

php wordpress sql-order-by
1个回答
1
投票

这很容易在设置查询参数之前进行检查。

function wpse139657_orderby($query){
    if(is_single && !is_singular('book')){
        return;
    } 
    $query->set( 'orderby', 'meta_value' ); 
    $query->set( 'order', 'DESC' ); 
    $query->set( 'meta_key', 'book_release_date' ); 
    $query->set( 'meta_type', 'NUMERIC' );

        if (is_admin() || $query->query_vars['post_type'] != 'book') return $query;
} 
add_filter('pre_get_posts','wpse139657_orderby');
© www.soinside.com 2019 - 2024. All rights reserved.