我在保存所有帖子类型(默认和自定义)的帖子元时遇到了一个问题。我想加入save_post 要运行我的函数,所发生的事情是添加了post meta,但随后立即删除了它。这就是我现在所拥有的:
function saveSidebarMeta($postId) {
$toAdd = $_POST[\'collection-topics\'];
foreach ($toAdd as $topic) {
add_post_meta($postId, \'collection-topic\', $topic);
}
}
add_action(\'save_post\', \'saveSidebarMeta\', 100);
现在,我将优先级设置为100,这确实会保存帖子元,但是如果页面再次保存,帖子元会被删除,除非添加了正确的信息,我不希望每次有人保存帖子时都删除和添加数据。
如果将优先级设置为默认值10,则会保存数据,但随后会立即删除。我之所以知道这一点,是因为1。)add_post_meta() 返回meta\\u键,然后数据库中不存在该键,2。)如果我把die() 之后的声明add_post_meta(), 元数据如表所示。
我有其他功能保存后元刚刚好。我是否错过了一些非常简单的事情?我研究这个问题已经有一段时间了,没有地方可以看,也没有方向可以找到解决方案。任何帮助都将不胜感激。谢谢
SO网友:Andy Macaulay-Brook
这是一个开始,但我们还需要查看生成表单的代码。
一种可能性是自动保存会把您搞砸,所以请在代码上尝试这种变体。
add_action(\'save_post\', \'saveSidebarMeta\', 100);
function saveSidebarMeta( $postId ) {
if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) {
return $post_id;
} else {
$toAdd = $_POST[\'collection-topics\'];
foreach ($toAdd as $topic) {
add_post_meta($postId, \'collection-topic\', $topic);
}
}
}
但如果我们也能看到您的表单生成代码,我可能可以进一步扩展它。