如果我在插件中使用另一个自定义帖子类型的元数据保存帖子,我想删除一些元数据。。我尝试从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\');
}
}
}
我不知道我的代码怎么了。。有人能给我建议吗?
最合适的回答,由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\');
}