来自其他字段的Wordpress自定义字段值(如果为空)

时间:2014-10-10 12:01:16

标签: php wordpress advanced-custom-fields

首先是我网站的链接:http://villatacchini.ch

我有2个自定义字段:“开始日期”和“结束日期”。

如果管理员没有设置“结束日期”字段,我想动态地设置结束日期和开始日期。

有可能吗?

我在我的字段中使用ACF,但如果有必要,我可以在php中导出我的字段:添加到文件functions.php

我使用meta_key进行查询。

最初我使用“开始日期”对事件进行排序。但是当一个事件发生在几天之后,它会在第二天之后消失。

所以现在我使用“结束日期”,但是一天的事件没有定义“结束日期”。

有关信息,如果我在一天内为我的活动定义了“结束日期”:它可以工作。但是如果事件是一天不需要设置结束日期(因为它与开始日期相同),我会简化事件的发布。

我的代码:

$args = array(
  'post_type'=>'evenement','meta_key'=>'end-date','orderby'=>'meta_value_num' , 'order'=>'ASC' , 'posts_per_page'=> 3,

'meta_query'=> array (array('key' => 'end-date', 'compare' => '>=', 'value' => $current_date, 'type' => 'numeric',))

); query_posts( $args );

如果我不明白,我会说很少的英语对不起

如果在发布帖子时填写字段,可能会解决问题。 是否可以使用“开始日期”字段

设置“结束日期”字段的默认值

2 个答案:

答案 0 :(得分:1)

我找到了你的问题,因为我和你有完全相同的问题。我的回答是在两年之后,但也许它可以帮助那些遇到同样问题的人。

获得它的方法是在保存自定义字段值时使用ACF过滤器。

// Auto-populate end date if it is empty.
function update_end_date_cf( $value, $post_id, $field ) {

   //NOTE: don't use get_field() because it retrieves the value
   //in a preformatted way different as it is saved in database       
   $end_date = get_post_meta( $post_id, 'end_date_cf_name', true );
   $start_date = get_post_meta( $post_id, 'start_date_cf_name', true );

   if ($end_date == '' && $start_date != '') {
      $value = $start_date;
   }

   return $value;

}
add_filter('acf/update_value/name=end_date_cf_name', 'update_end_date_cf', 10, 3);

希望它有所帮助!

答案 1 :(得分:0)

逻辑:

if end-date is empty
set end-date equal to start-date

它看起来像这样

<?php if( get_field('end-date') ): ?>
    <?php $end-date = $start-date ?>    
     //Your code here                
<?php endif; ?>