这个update_option()
函数有一个过滤器:
$value = apply_filters( "pre_update_option_{$option}", $new_value, $old_value );
在这个过滤器之后,还有一个过滤器
not 想要使用。
$value = apply_filters( \'pre_update_option\', $value, $option, $old_value );
(如果要使用该选项,则必须在回调中检查选项名称,这会增加不必要的开销。
然后,您需要做什么,通过以下方式对特定选项做出反应更改内容sending a mail via wp_mail()
, 是将回调附加到该筛选器。阅读@TODO
并填写缺失的位:
<?php
/** Plugin Name: (#16621) Send mail after Option Value changed */
add_action( \'plugins_loaded\', \'166221reactMail\' );
function 166221reactMail()
{
// @TODO Add you option names (valid triggers) here:
$valid = [
\'your\',
\'option\',
\'names\',
\'here\',
];
// Attach each filter: Precise targetting option names
foreach ( $valid as $name )
{
add_filter( "pre_update_option_{$name}", function( $new, $old )
{
# @TODO Adjust check/validity of mail trigger here
if ( $new !== $old )
{
# @TODO uncomment the following line - see note below
// add_filter( \'wp_mail_from\', \'166221reactMailFrom\' );
# @TODO Adjust values for wp_mail()
wp_mail(
\'[email protected]\',
sprintf( \'Change notification from %s\', get_option( \'blogname\' ) ),
sprintf( \'Value changed from %s to %s\', $old, $new )
);
}
return $new;
}
}
}
为了更轻松地添加创建高度特定的邮件收件箱规则,您可能还需要添加以下内容:
// @TODO Change "from" Name to make creating inbox rules easier
function 166221reactMailFrom( $from )
{
remove_filter( current_filter(), __FUNCTION__ );
return "[email protected]";
}
编辑刚刚意识到我在过滤器选项上写了一个答案,这在后元过滤器上没有任何意义。您必须将过滤器名称与来自
update_metadata()
, 由以下操作触发
update_post_meta()
其中
$meta_type
是
post
. 有两种筛选器或操作可供使用:
do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value );
或者,如果您知道您使用
post
posttype:
do_action( \'update_postmeta\', $meta_id, $object_id, $meta_key, $meta_value );
如果要在值更新后触发:
do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value );
特别是针对
post
岗位类型:
do_action( \'updated_postmeta\', $meta_id, $object_id, $meta_key, $meta_value );