我正在使用Avanced自定义字段向每个帖子输出一些额外的数据。为此,我在wordpress中将其添加到post.php文件中:
<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
我用红色标记的东西首先被展示出来了!我很想对这个循环进行排序,所以它会按字段顺序排序!而不是约会..。
发布于 2015-09-12 14:49:02
您可以使用array_multisort函数按您喜欢的顺序排列字段。让我展示一下:
ACF字段以组形式存储。每个字段都有menu_order参数。在管理字段中,总是按其排序,但在前端,这个顺序可能会被打破。
所以,首先,我们需要从我们的小组得到字段。我们需要知道ACF字段组ID。您可以在组编辑页面的url中找到它,例如:
http://site.ru/wp-admin/post.php?post=340&action=edit在这种情况下,组ID是340。如果您不想使用硬编码ID (如果您的组不时更改),您可以使用组名(在本例中为组名id Technic CPT)获得它:
global $wpdb;
$group_ID = $wpdb->get_var( "SELECT ID FROM $wpdb->posts WHERE post_title = 'Technic CPT'" );然后我们得到字段数组:
$acf_fields = acf_get_fields_by_id( $group_ID );下一步是为新订单创建数组。我们需要通过menu_order参数对字段进行排序:
$order = array();
foreach ( $acf_fields as $key => $field ) :
$order[ $key ] = $field[ 'menu_order' ];
endforeach;注意,$acf_fields的键也是$order的键!最后,我们可以对字段进行排序:
array_multisort(
$order, SORT_DESC,
$acf_fields
);如果您想从大到小排序,将使用SORT_DESC。SORT_ASC --从小到大。
就这样。现在,$acf_fields数组按menu_order参数排序。
https://stackoverflow.com/questions/32507031
复制相似问题