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刷新特色图片?

Wordpress - 特色图像元框未显示在自定义帖子类型上

选择行作为 wordpress 帖子元的列

Wordpress 搜索功能仅搜索帖子

排除元值空wordpress的帖子

使用 SQL 查询以 CSV 格式导出 WordPress 帖子和元信息