Wordpress 高级自定义字段 - 使用 get_field_objects() 排序;
Wordpress advanced custom field - sort with get_field_objects();
我正在使用高级自定义字段向每个 post 输出一些额外的数据。我通过将其添加到 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 循环在日期之后排序,而不是字段顺序。看这张图片:
我标红的在先显示!我很想对这个循环进行排序,所以它会在 Field Order 之后输出!而不是某个日期..
您可以使用 array_multisort 功能对字段进行任意排序。让我展示一下:
ACF 字段存储在组中。每个字段都有 menu_order 参数。在管理字段中总是按它排序,但在前端这个顺序可能会被打破。
所以,首先我们需要从我们的组中获取字段。我们需要知道 ACF 字段组 ID。您可以在组编辑页面的 url 中找到它,例如:
http://site.ru/wp-admin/post.php?post=340&action=edit
在这种情况下,组 ID 是 340。如果您不想使用硬编码 ID(如果您的组不时更改),您可以使用组名(在此示例中组名 id技术 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 参数排序。
我正在使用高级自定义字段向每个 post 输出一些额外的数据。我通过将其添加到 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 循环在日期之后排序,而不是字段顺序。看这张图片:
我标红的在先显示!我很想对这个循环进行排序,所以它会在 Field Order 之后输出!而不是某个日期..
您可以使用 array_multisort 功能对字段进行任意排序。让我展示一下:
ACF 字段存储在组中。每个字段都有 menu_order 参数。在管理字段中总是按它排序,但在前端这个顺序可能会被打破。
所以,首先我们需要从我们的组中获取字段。我们需要知道 ACF 字段组 ID。您可以在组编辑页面的 url 中找到它,例如:
http://site.ru/wp-admin/post.php?post=340&action=edit
在这种情况下,组 ID 是 340。如果您不想使用硬编码 ID(如果您的组不时更改),您可以使用组名(在此示例中组名 id技术 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 参数排序。