条件删除元数据不起作用

时间:2022-01-14 作者:MartyBiggies

如果我在插件中使用另一个自定义帖子类型的元数据保存帖子,我想删除一些元数据。。我尝试从get\\u posts函数中使用init hook和iterate array,但不起作用,我也尝试使用save\\u post hook,但也不起作用。。

在my \\uu construct函数中附加操作(在带有插件函数的类中):

add_action(\'save_post_survey\', [$this, \'survey_start_type_validation\']);
在这里,我试图检查元数据是否存在,如果存在,则删除旧的:

function survey_start_type_validation($post_id)
    {
            $type_of_running = get_post_meta($post_id, \'spusteni_dotazovani\');

            if($type_of_running == \'manually_run\') {
                if(metadata_exists($post_id, \'datum_a_cas_planovaneho_spusteni\')) {
                    delete_post_meta($post_id, \'datum_a_cas_planovaneho_spusteni\');
                }
            } elseif($type_of_running == \'planned_run\') {
                if(metadata_exists($post_id, \'running_status\')) {
                    delete_post_meta($post_id, \'running_status\');
                }
            }

    }
我不知道我的代码怎么了。。有人能给我建议吗?

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

尝试应用这些,您的代码可能会正常工作:

查看表达式$type_of_running == \'manually_run\'$type_of_running == \'planned_run\', 你期待的地方get_post_meta() 要返回单个元值,应将第三个参数设置为true:

// Set the 3rd param to true to get a single meta value.
$type_of_running = get_post_meta($post_id, \'spusteni_dotazovani\', true);
  • metadata_exists() 需要3个参数,即元类型(例如。post 对于post meta或term 对于术语meta),则;“对象”;ID(例如post ID或term ID)和元键,因此请确保传递正确的参数,如下所示:

    if(metadata_exists(\'post\', $post_id, \'datum_a_cas_planovaneho_spusteni\')) {
        delete_post_meta($post_id, \'datum_a_cas_planovaneho_spusteni\');
    }
    

    if(metadata_exists(\'post\', $post_id, \'running_status\')) {
        delete_post_meta($post_id, \'running_status\');
    }
    
  • 相关推荐

    php-page with db connection

    我必须在Wordpress中的何处存储PHP文件,以便设置DB连接。我当前正在使用此目录,但它不工作。D: \\ WordPress\\xampp\\htdocs\\myproject\\specialsite\\redirect。php目的是通过URL调用PHP文件http://www.myproject.de/specialsite/redirect.php.如何获取DB连接以及此URL?