1

我是 PHP/Wordpress 开发的新手,我想修改 eshop,现在当我们将订单标记为已发货时,eshop 插件不会发送自动电子邮件,为此我们必须在单击电子邮件 ID 后手动编写电子邮件。

我想在订单更改为发货时自动发送电子邮件。为此,我尝试找到一个插件,但直到现在还没有这样的插件,或者至少我没有找到它

下面我提到了实际上将详细信息发布到 PHP_Self 的表单代码,但问题是 id 不是 id,我想在页面中创建一个单独的函数,它不会影响任何其他功能,但是当用户发送信息功能发送电子邮件。

在这里它检查复选框的ID,选中的字段

                <td headers="transid numb'.$c.'">'.$myrow->transid.'</td>'.

                '<td headers="bulk numb'.$c.'"><label for="move'.$c.'">Move #'.$c.'</label><input type="checkbox" value="'.$checkid.'" name="move[]" id="move'.$c.'" />'

                ."</td></tr>\n";

在这里它检查选择操作并发送它

            <fieldset id="changestat"><legend><?php _e('Change Orders Status','eshop'); ?></legend>

            <p class="submit eshop"><label for="mark"><?php _e('Mark orders as:','eshop'); ?></label>

            <select name="mark" id="mark">

            <option value="Sent"><?php _e('Shipped','eshop'); ?></option>

            <option value="Completed"><?php _e('Active','eshop'); ?></option>

            <option value="Pending"><?php _e('Pending','eshop'); ?></option>

            <option value="Waiting"><?php _e('Awaiting Payment','eshop'); ?></option>

            <option value="Failed"><?php _e('Failed','eshop'); ?></option>

            <option value="Deleted"><?php _e('Deleted','eshop'); ?></option>

            </select>

            <input type="hidden" name="action" value="<?php echo $_GET['action']; ?>" />

            <input type="hidden" name="change" value="yes" />

            <input type="submit" id="submit1" value="<?php _e('Change','eshop'); ?>" /></p>

            </fieldset></form>

这里实际处理

if(isset($_POST['mark']) && !isset($_POST['change'])){

$mark=$_POST['mark'];

$checkid=$_POST['checkid'];

$query2=$wpdb->get_results("UPDATE $dtable set status='$mark' where checkid='$checkid'");

do_action( 'eshop_order_status_updated', $checkid, $mark );

echo '<div class="updated fade">'.__('Order status changed successfully.','eshop').'</div>';

}



if(isset($_POST['change'])){

if(isset($_POST['move']) && $_POST['move'][0]!=''){

    foreach($_POST['move'] as $v=>$ch){

        $mark=$_POST['mark'];

        $query2=$wpdb->get_results("UPDATE $dtable set status='$mark' where checkid='$ch'");

        do_action( 'eshop_order_status_updated', $ch, $mark );

    }

请指导我如何在标记为已发货时发送自动电子邮件,即

 <option value="Sent"><?php _e('Shipped','eshop'); ?>
4

1 回答 1

0

从您的代码中可以看出,每次更新订单状态时,shop 都会执行一个操作。这将允许您在不修改核心插件文件的情况下挂钩操作(使用代码创建自己的插件或将其放入主题的 functions.php 中),这意味着插件将是升级安全的。您可以在此处阅读有关 wordpress 操作如何工作的更多信息

add_action('eshop_order_status_updated', 'send_user_email', 2);

function send_user_email($id, $mark) {
    if ($mark == 'Sent') {

         // your email code here

    }
}

首先我们添加一个动作,我们指定我们希望我们的函数从动作接收 2 个参数。然后是函数本身,我们检查新状态是否为“已发送”(因为此操作在每次状态更改时运行),然后我们可以插入任何自定义代码。

于 2013-02-14T18:27:09.427 回答