【问题标题】:Add meta field just after post is published在帖子发布后添加元字段
【发布时间】:2017-08-24 10:16:41
【问题描述】:

我正在尝试在发布或保存帖子时添加 event_month 的自定义字段。我正在使用 save_post 操作并获取包含日期的自定义字段的内容,并尝试将其存储在仅包含月份的单独自定义字段中。这在保存已创建的帖子时非常有效。我在下面展示了我的代码。

add_action('save_post', 'update_event_date');

function update_event_date($post_id){

    $post_type = get_post_type($post_id);
    $event_datee = get_post_meta($post_id, '_EventStartDate', true);

    if ($post_type == 'tribe_events'){

        $month = date("m",strtotime($event_datee));
        update_post_meta($post_id, 'event_month', $month);

    }

}

创建新帖子时会出现问题。我认为这是因为该操作在 _EventStartDate 元创建之前触发,因此无法从中获取月份。

在保存/更新帖子时,钩子会按预期正确触发,但在创建新帖子时无法从元数据中正确获取月份。

如果有人能给我一些指导,我将不胜感激。

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    要访问与您一起传递的帖子元,您可以执行以下操作:

    $event_datee = get_post_meta($post_id, '_EventStartDate', true);
    foreach($_POST['meta'] as $meta){
         if($meta['key'] == '_EventStartDate'){
               $event_datee = $meta['value'];
          }
    };
    

    【讨论】:

    • 谢谢。当我要添加一个新帖子时,我收到一个错误“foreach() 提供的参数无效”,当我要添加一个新事件时,$event_datee 变量是空的..
    • 嗯,如果您有帖子的任何元字段,应该可以工作。试试var_dump($_POST);看看有没有你的meta?
    • 也尝试改变你的钩子的优先级,比如add_action('save_post', 'update_event_date', 99);
    • 谢谢!你给了我去寻找解决方案的想法。由于某种原因,在 var_dump 中将元字段显示为 event_start_date,这与它在数据库中显示为 _EventStartDate 的方式不同。我认为这是插件正在做的事情,但我从 $_POST['event_start_date'] 获得了我想要的日期,并且能够将其转换为月份。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 2021-11-12
    • 2013-12-03
    相关资源
    最近更新 更多