如果默认发布自定义字段值与CPT发布CF值匹配,则自动更新CPT发布的发布日期

时间:2021-09-12 作者:Puneet Verma

我的问题是-我有一个CPT Post name公司(CF Value-Google)和一个名为Role(CF V-Engineer)的页面。所以我想自动更新发布时间和日期company postRole page 如果发布的post自定义字段值与Google和Engineer匹配。

例如-

2021 9月13日晚上11:30:21发布的一篇招聘帖子有两个自定义字段“公司”和“角色”,其中包含谷歌和工程师的价值观。

已发布CPT Post公司有一篇帖子Google Jobs 其CF值与谷歌相似。

类似的已发布页面Engineer Jobs 拥有CF价值工程师。

所以我的所有条件都满足了,因为CF值匹配,现在代码应该用最近发布的发布日期和时间更新工程师工作(第页)、谷歌工作(发布)日期和时间。

任何参考代码或帮助都将不胜感激,我希望在functions.php 文件

我的代码(不工作)

function my_cron_schedules($schedules){
    if(!isset($schedules["5min"])){
        $schedules["5min"] = array(
            \'interval\' => 1*60,
            \'display\' => __(\'Once every 5 minutes\'));
    }
    if(!isset($schedules["30min"])){
        $schedules["30min"] = array(
            \'interval\' => 30*60,
            \'display\' => __(\'Once every 30 minutes\'));
    }
    return $schedules;
}
add_filter(\'cron_schedules\',\'my_cron_schedules\');
wp_schedule_event(time(), \'5min\', \'my_hourly_event\', $args);

//add_action(\'init\',\'my_hourly_event\');
function my_hourly_event() {
    $the_query = get_posts( \'post_type=post\' ); 
    foreach($the_query as $single_post) {
        $id=$single_post->ID;
        $ad_close_date=get_post_meta($id, \'Validdate\', true );
        if($ad_close_date!=\'\'){
            $today=date("j F Y");
            if($ad_close_date<$today){
                $update_post = array(
                \'ID\'            => $id,
                \'meta_key\' => \'Location\',
                \'publish_date\'  =>  get_the_time( \'\', $post->ID ),
                \'post_type\' =>  \'jobs\',
                \'meta_value\' => get_post_meta(get_the_ID(), \'Location\',true));
                wp_update_post($update_post);
            }   
        }
    }
}

1 个回复
SO网友:While1

尝试使用hook on update post meta作为更新后日期。类似下面的代码,只需更改company_title_metacompany_role_meta 到正确的元密钥。

如果有些东西不起作用,请发表评论,我会尽力帮助你

add_action( \'updated_post_meta\', \'on_post_update_after_post_meta\', 10, 4 );

function on_post_update_after_post_meta( $meta_id, $post_id, $meta_key, $meta_value )
{
    if ( in_array($meta_key, [\'company_title_meta\',\'company_role_meta\']) ){
        $time = time();
        $my_post = array(
            \'ID\'            => $post_id,
            \'post_date\'     => date( \'Y-m-d H:i:s\', $time ),
            \'post_date_gmt\' => gmdate( \'Y-m-d H:i:s\', $time ),
        );
        wp_update_post( $my_post );
    }
}

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register