TLDR:我的自定义帖子类型项目在本地环境和实时服务器上的排序不同。不知道为什么!
我有一个本地安装(MAMP)和一个在线dev安装(GoDaddy共享,供客户端查看)的站点,其中包含自定义帖子类型的帖子页面。CPT岗位为房地产。CPT帖子使用高级自定义字段添加了元信息。ACF字段包括每个属性所处的状态和属性类型。
这是一个相关页面CPT page for Wisconsin posts
CPT帖子按州分为三页。在每个状态页中,属性按属性类型排序。也就是说,它们按状态排序,然后按属性类型排序。
我使用WP\\u查询为每个页面执行此操作。以下是威斯康星州页面的查询:
<?php
$args = array(
\'post_type\' => \'properties\',
\'post_status\' => \'publish\',
\'posts_per_page\' => -1,
\'meta_query\' => array(
\'state_clause\' => array(
\'key\' => \'state\',
\'value\' => \'WI\'
),
\'prop_type\' => array(
\'key\' => \'property_type\'
),
),
\'orderby\' => array(
\'prop_type\' => \'ASC\'
)
);
$wiQuery = new WP_Query($args);
?>
<?php
if( $wiQuery->have_posts() ) {
while ($wiQuery->have_posts()) : $wiQuery->the_post();
对于状态页,排序工作正常。换句话说,所有Wisconsin属性都显示在右侧页面上,它们是按属性类型的ACF元字段顺序分组的属性。
但是,在这些组中,属性在本地MAMP站点上的显示顺序与在dev安装中的显示顺序不同。例如,在本地安装中,1501 Paramount Drive出现在1209 Deming Way之前。这对我来说真的很奇怪!
开发站点和本地站点都是WordPress的同一版本,也是我正在处理的完全相同的自定义主题。他们使用的是相同版本的ACF。95%的帖子在上传到开发人员的位置之前被添加到了本地站点。
这可能与PHP版本不同(似乎不太可能),还是与mysql版本有关?
属性自定义帖子类型本身有一个奇怪的起源。许多年前,一位开发人员使用Easy Custom Post Type插件进行了设置,但该插件已不起作用。我停用了该插件并将CPT添加到函数文件中,并且我能够使用ECPT添加的所有属性。我只需要重做所有的元数据。
这不是一个紧迫的问题,只是令人困惑。如果有人知道为什么在不同的服务器上会有不同的排序,我很高兴听到他们的意见。
SO网友:joshmoto
php问题在2个或多个同步环境上重新调整不同的结果(如果每个env db数据相同,并且任何传递的数据都相同)。。。这可能很棘手。
我注意到的另一件事是你meta_query
arg不包含包含以下内容的子数组state_clause
和prop_type
.
您的代码是。。。
\'meta_query\' => array(
\'state_clause\' => array(
\'key\' => \'state\',
\'value\' => \'WI\'
),
\'prop_type\' => array(
\'key\' => \'property_type\'
)
),
您可能需要将两个内部
meta_query
args数组转换为另一个数组,请参见下面的示例。。。
。。。您可能需要包括relation
参数/键。。。请参见orderby WP_Query 文档
\'meta_query\' => array(
array(
\'state_clause\' => array(
\'key\' => \'state\',
\'value\' => \'WI\'
),
\'prop_type\' => array(
\'key\' => \'property_type\'
)
)
),