我仍在努力让我的头脑适应这一切,所以我真的在努力完成以下任务:
如果update_post_meta
然后检查meta_key
等于(如果使用特定的meta\\u键,我想触发一些代码)。如果我正在寻找的元密钥,那么运行一些需要知道$post->ID
正在更新的元密钥的。
我需要挂上delete_post_meta
同样,这种情况与上述情况相反。
谁能给我提供一些示例代码update_post_meta
和delete_post_meta
?
我仍在努力让我的头脑适应这一切,所以我真的在努力完成以下任务:
如果update_post_meta
然后检查meta_key
等于(如果使用特定的meta\\u键,我想触发一些代码)。如果我正在寻找的元密钥,那么运行一些需要知道$post->ID
正在更新的元密钥的。
我需要挂上delete_post_meta
同样,这种情况与上述情况相反。
谁能给我提供一些示例代码update_post_meta
和delete_post_meta
?
这个update_post_meta
钩子是从更通用的update_metadata()
函数,因此您可能无法直接找到它。这三个挂钩是:
update_post_metadata
, 一个过滤器,允许您“劫持”元数据更新并执行其他操作。如果您连接了一个返回布尔值的函数,则执行将停止并返回布尔值update_post_meta
, 在数据库中更新数据之前调用的操作updated_post_meta
, 在数据库中更新数据后调用的操作update_metadata()
将控制传递给add_metadata()
, 有相似的钩子add_post_metadata
, add_post_meta
, 和added_post_meta
. 这以前发生过update[d]_post_meta
被调用。因此,如果您想在添加元键或更新元键时执行某些操作,请确保连接到update*
以及add*
挂钩-但请注意updated_*
和added_*
动作传递类似的参数,update_*
和add_*
请勿(add_post_meta
不首先传递元ID)。delete_metadata()
具有类似的挂钩:delete_post_metadata
, delete_post_meta
和deleted_post_meta
.
示例代码:
add_action( \'added_post_meta\', \'wpse16835_after_post_meta\', 10, 4 );
add_action( \'updated_post_meta\', \'wpse16835_after_post_meta\', 10, 4 );
function wpse16835_after_post_meta( $meta_id, $post_id, $meta_key, $meta_value )
{
if ( \'wpse16835_meta_key\' == $meta_key ) {
wpse16835_do_something( $post_id, $meta_value );
}
}
add_action( \'deleted_post_meta\', \'wpse16835_deleted_post_meta\', 10, 4 );
function wpse16835_deleted_post_meta( $deleted_meta_ids, $post_id, $meta_key, $only_delete_these_meta_values )
{
if ( \'wpse16835_meta_key\' == $meta_key ) {
wpse16835_undo_something( $post_id );
}
}
Jan answer几乎涵盖了以上内容,但从编辑帖子页面删除自定义元数据的情况除外。只要您通过调用wp admin/admin ajax单击元数据下的“Delete”按钮,就会异步发生这种情况。php。不幸的是,这调用绕过delete_metadata()
meta中的函数。php和调用delete_meta()
在wp admin/includes/post中。而不是php(不要与wp includes/post.php混淆)。
但仍有2个操作可以使用,delete_postmeta
(删除前),以及deleted_postmeta
(删除后)。两者都接受单个参数$mid
, 它是元数据的ID(不是键)。可以使用以下方法检索元数据对象:
$meta = get_post_meta_by_id($mid);
它返回一个具有meta\\u id、post\\u id、meta\\u key和meta\\u value的对象。当然,到时候deleted_postmeta
被称为元数据已被删除,因此get_post_meta_by_id()
行不通(这有点让这个动作没用)从编辑帖子页面更新自定义元数据也是如此。这个update_metadata()
元中的函数(及其动作)。php不是调用的,而是update_meta()
wp admin/includes/post中的功能。相反,php是。这里又有两个动作,update_postmeta
和updated_postmeta
. 参数是$meta\\u id、$post\\u id、$meta\\u key、$meta\\u value。
我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴