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 に答える