从数组中删除空字词,按字母顺序排序,更新回重复字段

时间:2019-08-19 作者:warm__tape

我有一个重复字段,它将文本项存储在一个数组中,如下所示:

[0] => 
[1] => NUC Lights
[2] => Smoke Alarm
[3] => Binoculars
您将注意到键A没有值,并且它们没有按字母顺序排列。我要做的是获取上面的数组,删除空值,对其排序,然后按如下方式重新保存:

[0] => Binoculars
[1] => NUC Lights
[2] => Smoke Alarm
这是我当前的代码:

// Post Types to include
$post_args = array(
    \'posts_per_page\' => -1,
    \'post_type\' => array(
        \'boat\'
    ),
);

// The Query
$post_query = new WP_Query( $post_args );
$posts = $post_query->posts;

foreach($posts as $post) {

    $boat_safety_terms = get_post_meta( $post->ID, \'wpcf-all-safety-terms\', false );
    $boat_safety_terms_cleaned = array_filter( $boat_safety_terms );
    $boat_safety_terms_cleaned_sorted = sort( $boat_safety_terms_cleaned );

    error_log( print_r( $boat_safety_terms_cleaned_sorted, TRUE ) );

}
但我的日志只显示1 因为某种原因,每艘船都有。知道它可能出了什么问题吗?

另外,我想我会使用update_post_meta 要将阵列保存回字段?

1 个回复
最合适的回答,由SO网友:Rup 整理而成

$boat_safety_terms_cleaned_sorted = sort( $boat_safety_terms_cleaned );
error_log( print_r( $boat_safety_terms_cleaned_sorted, TRUE ) );
PHP\'s sort 接受数组引用并就地排序,并返回成功或失败-因此得到1。您需要:

sort( $boat_safety_terms_cleaned );
error_log( print_r( $boat_safety_terms_cleaned, TRUE ) );
另外,我假设我想使用update\\u post\\u meta将数组保存回字段?

是的,那很好。我假设这是一种实用方法,您可以在每篇文章中手动触发一次,而不是理所当然地运行它?如果是保存一艘船,那么可能有更好的方法在保存时过滤该值,具体取决于您的操作方式。

相关推荐

Php文件子主题目录不覆盖父主题php文件

我正在尝试在主题/woocommerce/布局产品/网格中自定义html。php,我已经将该文件从父主题复制到了子主题/woocommerce/layout products/grid。php,但没有任何效果。从我在这里找到的答案中,我了解到有时候复制php文件是可行的,有时候不行?我也为这个文件尝试了一次require\\u,但这破坏了整个WordPress。如何自定义产品网格html?