我们有一个声明列表插件,它允许用户声明项目(帖子)。它要求用户“注册”以声明该项目,因此他们必须输入用户名和电子邮件。
在他们提交索赔后,将向管理员电子邮件(我们)发送一封电子邮件,说明用户正在索赔该项目,并向我们提供批准或拒绝该项目的选项。
不幸的是,当我们批准或拒绝该项目时,不会向用户发送电子邮件,通知他们该项目已被批准或拒绝。
我们如何让wordpress向用户发送电子邮件,告知他们我们的回应?
代码:CodeShare (代码太长了,当我把它粘贴到这里的时候,代码被破坏了,伙计们,对不起!)如您所见,其中有一个wp\\U邮件功能,但用于向管理员发送邮件时,表明已请求项目所有权请求)
这似乎与问题(下面的代码)有关,然后我们需要添加什么来向用户发送电子邮件,表示他们的请求已被批准?
public static function claimListingActions(){
if(isset($_GET[\'post_type\']) && $_GET[\'post_type\'] === \'ait-item\'){
if (isset($_GET[\'claim-action\']) && !empty($_GET[\'post-id\'])) {
$postID = intval($_GET[\'post-id\']);
// admin can approve all ratings
if (current_user_can(\'manage_options\')) {
switch($_GET[\'claim-action\']){
case \'approve\':
$redirect = admin_url(\'edit.php?post_type=ait-item&ait-notice=claim-approved\');
$data = get_post_meta($postID, \'ait-claim-listing\', true);
$data[\'status\'] = \'approved\';
update_post_meta($postID, \'ait-claim-listing\', $data);
$user = get_user_by(\'email\', $data[\'owner\']);
// update also the _ait-item_item-author data field -> prevent errors
update_post_meta($postID, \'_ait-item_item-author\', array(\'author\' => $user->ID));
wp_update_post( array(\'ID\' => $postID, \'post_author\' => $user->ID), true );
break;
case \'decline\':
$redirect = admin_url(\'edit.php?post_type=ait-item&ait-notice=claim-declined\');
$data = get_post_meta($postID, \'ait-claim-listing\', true);
$data[\'status\'] = \'unclaimed\';
$data[\'owner\'] = \'-\';
$data[\'date\'] = \'-\';
update_post_meta($postID, \'ait-claim-listing\', $data);
$user = new WP_User($data[\'author\']);
// update also the _ait-item_item-author data field -> prevent errors
update_post_meta($postID, \'_ait-item_item-author\', array(\'author\' => $user->ID));
wp_update_post( array(\'ID\' => $postID, \'post_author\' => $user->ID) );
break;
}
wp_safe_redirect( $redirect );
exit();
}
}
}
}
SO网友:butlerblog
不幸的是,开发人员没有在他们的代码中为您提供任何挂钩,以便在不进行黑客攻击的情况下进行定制。但并没有失去一切——WP中有一些钩子可以用来触发电子邮件。
理想的做法是触发update_post_meta()
. 该函数只是update_metadata()
里面有很多钩子。
这是一个未经测试的方向示例。希望它能给你一些东西。
/**
* @param int $meta_id ID of updated metadata entry.
* @param int $object_id Post ID.
* @param string $meta_key Meta key.
* @param mixed $meta_value Meta value. This will be a PHP-serialized string representation of the value if
* the value is an array, an object, or itself a PHP-serialized string.
*/
add_action( \'updated_postmeta\', function( $meta_id, $object_id, $meta_key, $meta_value ) {
if ( \'ait-claim-listing\' == $meta_key ) {
if ( \'approved\' == $meta_value[\'status\'] ) {
$email_to = $meta_value[\'owner\'];
$subject = \'Your approved email subject\';
$message = \'Your approved email message...\';
}
if ( \'unclaimed\' == $meta_value[\'status\'] ) {
$email_to = $meta_value[\'author\'];
$subject = \'Your unclaimed email subject\';
$message = \'Your unclaimed email message...\';
}
$result = wp_mail( $email_to, $subject, $message );
}
}, 10, 4 );
请记住,这是一个未经测试的过程,只是一个基于问题中信息的思考过程。您可能需要进行一些调整,使其真正起作用。