【问题标题】:How to avoid conflict between a function and single posts如何避免函数和单个帖子之间的冲突
【发布时间】:2020-01-25 08:49:26
【问题描述】:

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

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】:

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

    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');
    

    【讨论】:

    • 由于文件 wp-content/themes/MyTheme/functions.php 第 14 行的错误,您的 PHP 代码更改已回滚。请修复并再次尝试保存。语法错误,意外的“返回”(T_RETURN)
    • 哦,那是 if(is_single && !is_singular('book')){ 你忘记关闭它了。顺便说一句,不幸的是它不能解决问题。单个帖子页面仍然存在冲突,即使不使用您的代码,我的问题中显示的第二个代码(检索图像的代码)也不起作用。
    猜你喜欢
    • 2014-10-09
    • 1970-01-01
    • 2019-02-21
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多