首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WordPress orderby多个meta_key不起作用

WordPress是一种流行的开源内容管理系统(CMS),用于构建和管理网站。它提供了丰富的功能和插件生态系统,使用户能够轻松创建和管理各种类型的网站。

在WordPress中,orderby参数用于指定查询结果的排序方式。meta_key参数用于指定按照哪个自定义字段进行排序。然而,当我们尝试在WordPress中使用orderby参数来同时排序多个meta_key时,可能会遇到一些问题。

这个问题的原因是WordPress默认只支持按照一个meta_key进行排序,而不支持同时按照多个meta_key进行排序。这意味着无法直接在查询中使用orderby参数来实现多个meta_key的排序。

解决这个问题的一种方法是使用自定义查询来实现多个meta_key的排序。我们可以使用WP_Query类来构建自定义查询,并在查询中使用meta_query参数来指定多个meta_key。然后,我们可以使用usort函数对查询结果进行排序,根据我们的需求对多个meta_key进行排序。

以下是一个示例代码,演示如何使用自定义查询和usort函数来实现多个meta_key的排序:

代码语言:txt
复制
$args = array(
    'post_type' => 'post',
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'meta_key1',
            'compare' => 'EXISTS',
        ),
        array(
            'key' => 'meta_key2',
            'compare' => 'EXISTS',
        ),
    ),
);

$query = new WP_Query( $args );

// 对查询结果进行排序
usort( $query->posts, function( $a, $b ) {
    $meta_value1 = get_post_meta( $a->ID, 'meta_key1', true );
    $meta_value2 = get_post_meta( $b->ID, 'meta_key1', true );
    $meta_value3 = get_post_meta( $a->ID, 'meta_key2', true );
    $meta_value4 = get_post_meta( $b->ID, 'meta_key2', true );

    // 根据需要的排序逻辑进行比较
    // 这里只是一个示例,你可以根据实际需求进行修改
    if ( $meta_value1 == $meta_value2 ) {
        return $meta_value3 - $meta_value4;
    } else {
        return $meta_value1 - $meta_value2;
    }
} );

// 输出查询结果
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        // 输出文章内容
    }
} else {
    // 没有找到符合条件的文章
}

// 重置查询
wp_reset_postdata();

在这个示例中,我们首先定义了一个$args数组,其中包含了我们的查询参数。meta_query参数用于指定多个meta_key,并使用relation参数来指定多个meta_key之间的关系(这里使用AND表示同时存在)。然后,我们使用WP_Query类来执行查询,并将查询结果存储在$query变量中。

接下来,我们使用usort函数对查询结果进行排序。在排序函数中,我们使用get_post_meta函数获取每篇文章的meta_key值,并根据需要的排序逻辑进行比较。这里只是一个示例,你可以根据实际需求修改排序逻辑。

最后,我们使用循环输出查询结果中的文章内容,并在结束后重置查询。

需要注意的是,这只是一种解决多个meta_key排序问题的方法,具体的实现方式可能因实际需求而异。另外,还可以考虑使用自定义插件或扩展来实现更复杂的排序需求。

推荐的腾讯云相关产品:腾讯云服务器(CVM)、腾讯云数据库(TencentDB)、腾讯云对象存储(COS)、腾讯云CDN(内容分发网络)等。你可以通过访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WordPress 文章查询教程6:如何使用排序相关的参数

WordPress 中,使用 WP_Query 进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。...「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...我写这一系列文章的目的也是为了方便自己使用这些参数的时候方便查询,所以如果你也是经常进行 WordPress 二次开发的话,建议收藏本文。...” 参数的升序或降序,默认为”DESC”,即为降序,如果是数组的话,可用于多个 order/orderby 集: ASC – 升序,从最低值到最高值 (1, 2, 3; a, b, c) DESC –...可以传递一个或多个选项: none – 无顺序 ID – 按文章 ID 排序,注意 ID 是大写的。 author – 按文章作者排序。

1.5K30

修改 WordPress 文章默认排序的方法

我们用 wordpress 发布文章时,会用到一个希望把指定某一篇或者几篇文章置顶首页的功能,而不是 wordpress 默认的按照发布时间降序排列,也就是说按照我的想法文章排序第一、第二、第三、第四等等...本着能不用插件就不用插件的原则,魏艾斯博客来说一下如何修改 wordpress 文章默认排序,摆脱按发布时间升降序排列的方法。 ? 首先要添加一处。...在 wordpress 后台的“写文章”里面,最上面点开“显示选项”,勾选最上面的“自定义栏目”。 ? 这时候在文章编辑区的下面就会看到自定义栏目了。...在 index.php 中替换如下代码,把默认发布时间排序改成了你的 meta_key,同时添加一项 meta_key。...’ => ‘post_order’, ‘orderby’ => ‘meta_value’, ‘paged’ => $paged, ‘order’ => ‘DESC’ ); 上传覆盖源文件后,你就可以依据自己定义的

2.9K50
  • WordPress 文章查询教程9:如何使用自定义字段(post meta)参数

    WordPress 中,使用 WP_Query 进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。...「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query 进行 WordPress 文章查询。...我写这一系列文章的目的也是为了方便自己使用这些参数的时候方便查询,所以如果你也是经常进行 WordPress 二次开发的话,建议收藏本文。...relation (string) – 用于定义多个内嵌 meta_query 数组之间的关系,它的值是:'AND', 'OR'。只有一个内嵌 meta_query 数组参数的时候,不要使用该参数。...meta_query 还包含一个或者多个具有以下键值的数组: key (string) – 自定义字段的 key。 value (string|array) – 自定义字段的 value。

    1.1K10

    WordPress的可拓展性初探(一)

    作者:西瓜玩偶(racnil070512 at hotmail dot com) WordPress是一个时下非常流行的网络信息发布平台,它的特性之一便是极强的可拓展性。...下面的篇幅尝试从两个方面简单介绍WordPress的可拓展性。这两个方面不仅可以帮助我们编写WordPress的插件,同样可以帮助我们设计具有可拓展性的架构。 1....数据库 在原版WordPress中,每一篇文章有哪些元信息(meta-data)是已经定好了的,例如一篇文章会有“作者”、“标题”、“发布时间”、“文章内容”等。...在WordPress中有一个表专门用于存储文章的元信息,名称叫做 wp_postmeta 。它只有四列,分别为 meta_id 、 post_id 、 meta_key 、 meta_value 。...下面举例获取纬度: SELECT meta_value FROM wp_postmeta WHERE post_id= and meta_key="latitude"; 如果要同时获取多个信息

    85790

    使用内存缓存优化 WordPress 文章编辑锁定功能

    多人作者的 WordPress 在后台编辑文章,如果有其他用户也在编辑,在文章列表页会提示下面的信息: WordPress 的文章编辑锁定功能 这个就是 WordPress 的文章编辑锁定功能,提示当前谁在编辑这篇文章...,如果继续点击进去,WordPress 会再次提示如下的信息: 这样就防止多人编辑文章产生了冲突,那么 WordPress 是怎么实现这个功能的呢?..., $meta_value){ if($meta_key == '_edit_lock'){ return wp_cache_set($post_id, $meta_value, 'wpjam_post_edit_lock...', 300); } return $pre; },10,4); add_filter('get_post_metadata', function($pre, $post_id, $meta_key...){ if($meta_key == '_edit_lock'){ return [wp_cache_get($post_id, 'wpjam_post_edit_lock')]; } return

    38020
    领券