保存空的或丢失的POST元数据的默认值

时间:2013-11-04 作者:Tayssir Ch

我使用的是WordPress,我使用的是一个名为ecpt_carprice 对于我正在发布的每个帖子,该字段都保存在wp_postmeta 与所附图像相同:

我的一些车(帖子)没有元钥匙ecpt_carprice.
您能为我提供任何方法(WordPress/PHP或SQL查询)来为每个没有元条目的帖子存储一个值为0的新条目吗?

我有这个代码,但我不知道如何使用它

if ( has_term( \'\', \'car_brand\' )) {

//check if the meta field has a value
$meta_values = get_post_meta($post->ID, \'ecpt_carprice\', true);

if(empty($meta_values)){
//add a default value
add_post_meta($post->ID, \'ecpt_carprice\', \'0\');
}
}

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

如果您想并且只需要执行@tf建议的操作,如果不存在值,则只需注意显示0,您可以构造一个函数,如下所示:

function wpse121165_return_carprice() {
    $ecpt_carprice = get_post_meta($post->ID, \'ecpt_carprice\', true);
    if(! empty( $ecpt_carprice ) ){
        return $ecpt_carprice;
    } else {
        return 0;
    }
}
使用如下功能:echo wpse121165_return_carprice();

如果确实需要更新数据库,则必须以另一种方式进行。下面的代码应该让您了解如何执行此操作:

 function wpse121165_update_carprice_meta() {
      // args to query for your key
      $args = array(
        \'post_type\' => \'your_post_type\',
        \'meta_query\' => array(
            \'relation\' => \'OR\',
            array(
                \'key\' => \'ecpt_carprice\',
                \'value\' => \'bogus\', // you have to pass a value
                \'compare\' => \'NOT EXISTS\'
            ),
            array(
                \'key\' => \'ecpt_carprice\',
                \'value\' => \'\'
            )
        ),
        \'fields\' => \'ids\'
      );
      // perform the query to get back an array of ids
      $not_exist_or_empty_ids = new WP_Query( $args );

      foreach ( $not_exist_or_empty_ids as $id ) {
          update_post_meta($id, \'ecpt_carprice\', \'0\');
      }
 }
使用如下功能:wpse121165_update_carprice_meta();. 如果你把这个放进去functions.php 并在数据库上执行元更新,确保之后禁用它,不要反复调用它。

结束