Wordpress 保存帖子操作会覆盖帖子元更新
Posted
技术标签:
【中文标题】Wordpress 保存帖子操作会覆盖帖子元更新【英文标题】:Wordpress save post action overwrites post meta update 【发布时间】:2015-02-19 20:20:48 【问题描述】:当我在没有退出的情况下在保存后触发以下操作挂钩时,Wordpress 会覆盖我为某些字段(不是全部)设置的值。尤其是 _variable_pricing 键。当我设置退出时;在此功能之后并阻止 Wordpress 完成整个操作,该字段在数据库中正确更新。我猜这个命令好像有问题?
function edit_photo_meta($post_id)
# Update meta
//... other fields to update
update_post_meta($post_id, '_variable_pricing', 1);
exit;
add_action('save_post', 'edit_photo_meta')
谢谢!
【问题讨论】:
【参考方案1】:可以自动保存。
试试
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return;
在函数edit_photo_meta中
【讨论】:
感谢您的回答,键'_variable_pricing'的值仍然是'0'。当我退出时;它保持在“1”,但我当然打破了这个功能。 你有测试跳过帖子的自动保存吗? 是的,我已将您的代码添加到函数中进行测试 :) .. 我尝试了后期编辑,但没有运气【参考方案2】:可能是动作钩子的顺序。你最好钩住更新后的元数据:
add_action( 'updated_post_meta', 'override_post_meta', 10, 4 );
function override_post_meta( $meta_id, $post_id, $meta_key, &$meta_value )
if ( '_variable_pricing' == $meta_key )
update_post_meta($post_id, '_variable_pricing', 1);;
这个钩子在元被更新后被调用,所以它会覆盖之前的值。
【讨论】:
.. string(17) "_variable_pricing" .... int(1) ... 是 var_dump 输出。它已设置但仍在数据库中我有一个 0 值。钩子好像来早了,已经被覆盖了 我看了一下代码并更新了答案。事实证明,WordPress 忽略了这一变化。有一个具有几乎相同名称的钩子名称(使用 d 而不是 update 更新)具有相同的参数。您可以像以前尝试过的那样实际更新元数据。以上是关于Wordpress 保存帖子操作会覆盖帖子元更新的主要内容,如果未能解决你的问题,请参考以下文章
如何强制WordPress Gutenberg刷新特色图片?