首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Wordpress高级自定义字段-使用get_field_objects()进行排序;

Wordpress高级自定义字段-使用get_field_objects()进行排序;
EN

Stack Overflow用户
提问于 2015-09-10 16:20:45
回答 1查看 1K关注 0票数 0

我正在使用Avanced自定义字段向每个帖子输出一些额外的数据。为此,我在wordpress中将其添加到post.php文件中:

代码语言:javascript
运行
复制
<ul>

<?php foreach( $fields as $field ): ?>



    <?php if( $field['value'] ): ?>

        <li><?php echo $field['label']; ?>: <div class="new_color_test"> <?php echo $field['value']; ?></div></li>

    <?php endif; ?>



<?php endforeach; ?>

</ul>

这曾经是完美的!但是在更新了一些字段标签之后,这个php循环会在日期之后进行排序,而不是字段顺序。看看这张图片:

http://imgur.com/MzZy66m

我用红色标记的东西首先被展示出来了!我很想对这个循环进行排序,所以它会按字段顺序排序!而不是约会..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-12 14:49:02

您可以使用array_multisort函数按您喜欢的顺序排列字段。让我展示一下:

ACF字段以组形式存储。每个字段都有menu_order参数。在管理字段中,总是按其排序,但在前端,这个顺序可能会被打破。

所以,首先,我们需要从我们的小组得到字段。我们需要知道ACF字段组ID。您可以在组编辑页面的url中找到它,例如:

代码语言:javascript
运行
复制
http://site.ru/wp-admin/post.php?post=340&action=edit

在这种情况下,组ID是340。如果您不想使用硬编码ID (如果您的组不时更改),您可以使用组名(在本例中为组名id Technic CPT)获得它:

代码语言:javascript
运行
复制
global $wpdb;
$group_ID = $wpdb->get_var( "SELECT ID FROM $wpdb->posts WHERE post_title = 'Technic CPT'" );

然后我们得到字段数组:

代码语言:javascript
运行
复制
$acf_fields = acf_get_fields_by_id( $group_ID );

下一步是为新订单创建数组。我们需要通过menu_order参数对字段进行排序:

代码语言:javascript
运行
复制
$order = array();
foreach ( $acf_fields as $key => $field ) :
 $order[ $key ] = $field[ 'menu_order' ];
endforeach;

注意,$acf_fields的键也是$order的键!最后,我们可以对字段进行排序:

代码语言:javascript
运行
复制
array_multisort(
 $order, SORT_DESC,
 $acf_fields
);

如果您想从大到小排序,将使用SORT_DESCSORT_ASC --从小到大。

就这样。现在,$acf_fields数组按menu_order参数排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32507031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档