加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在wp_insert_post_data的过滤器中获取自定义字段值

发布时间:2020-12-13 21:57:39 所属栏目:PHP教程 来源:网络整理
导读:大家好,感谢您的阅读. 环境 : WordPress高级自定义字段插件 问题: 我现在已经搜索了几个小时,我似乎无法找到正确的语法来执行以下操作: 发布新帖子时,获取自定义字段值,以便自动用该值替换帖子的标题.示例:我创建了一个帖子并在我的’time’自定义字段中
大家好,感谢您的阅读.

环境 :

WordPress高级自定义字段插件

问题:

我现在已经搜索了几个小时,我似乎无法找到正确的语法来执行以下操作:

发布新帖子时,获取自定义字段值,以便自动用该值替换帖子的标题.示例:我创建了一个帖子并在我的’time’自定义字段中设置’10am’.帖子的标题自动被’上午10点’取代.

例:

所以我添加了一个带有以下内容的过滤器:

add_filter('wp_insert_post_data','change_title') ;

function change_title($data)

{

    $time = XXX ; // How should I get this custom field value ?

    $new_title = 'Topic created at'.$time ;

    $data['post_title'] = $time ;

    return $data;

}

它必须非常简单,但我已经尝试了WP和插件文档中的所有可用功能.如果路过的人给我解决方案,我将非常感激.

提前致谢 !

解决方法

你可以实际访问你的字段值的全局$_POST变量,但我想你可以通过使用save_post动作来更新你的帖子的标题,以更清洁的方式做到这一点,例如:

add_action('save_post','change_title');

function change_title($post_id) {
    $time = get_field('time',$post_id);
    $post_title = 'Topic created at '. $time;

    // unhook this function so it doesn't loop infinitely
    remove_action('save_post','change_title');

    // update the post,which calls save_post again
    wp_update_post(array('ID' => $post_id,'post_title' => $post_title));

    // re-hook this function
    add_action('save_post','change_title');
}

假设您的ACF字段名称是“时间”.

编辑:根据Mark Chitty的回答更新了答案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读