我如何在WooCommerce上获得关于订单的最新说明?

时间:2018-01-24 作者:Milad Karimi

我想当订单处于(处理)位置时,向客户发送短信,如何获取订单中的最后一个注释并将其放入(%comment%)键中?

    if ( isset( $this->options[\'wc_notify_customer_payment_successful_enable\'] ) ) {
        add_action( \'woocommerce_order_status_processing\', array( &$this, \'successful_payment_notification_client\' ) );
    }



* WooCommerce Successful payment notification client 
 *
 * @param $checkout
 */
public function successful_payment_notification_client ( $order_id ) {
    // Check the mobile field is empty
    if ( empty( $_REQUEST[\'mobile\'] ) ) {
        return;
    }

    $order          = new WC_Order( $order_id );
    $this->sms->to  = array( $_REQUEST[\'mobile\'] );
    $template_vars  = array(
        \'%order_id%\'           => $order_id,
        \'%order_number%\'       => $order->get_order_number(),
        \'%status%\'             => $order->get_status(),
        \'%billing_first_name%\' => $_REQUEST[\'billing_first_name\'],
        \'%billing_last_name%\'  => $_REQUEST[\'billing_last_name\'],
        \'%comment%\'            => **What I say is here**
    );
    $message        = str_replace( array_keys( $template_vars ), array_values( $template_vars ), $this->options[\'wc_notify_customer_payment_successful_message\'] );
    $this->sms->msg = $message;
    $this->sms->SendSMS();
}

1 个回复
最合适的回答,由SO网友:ahendwh2 整理而成

订单注释保存为post注释,因此您可以使用WordPress功能get_comments() 要获取最后一条注释:

$args = array(
    \'post_id\' => $order_id,
    \'orderby\' => \'comment_ID\',
    \'order\'   => \'DESC\',
    \'approve\' => \'approve\',
    \'type\'    => \'order_note\',
    \'number\'  => 1
);

remove_filter( \'comments_clauses\', array( \'WC_Comments\', \'exclude_order_comments\' ), 10, 1 );

$notes = get_comments( $args );

add_filter( \'comments_clauses\', array( \'WC_Comments\', \'exclude_order_comments\' ), 10, 1 );
默认情况下,在调用get\\u comments函数时,Woocommerce会排除订单注释。要防止出现这种情况,必须删除筛选器,请调用get_comments() 然后再次添加过滤器。我从函数中复制了此代码WC_Meta_Box_Order_Notes::output() 在wp content/plugins/woocommerce/includes/admin/meta box/class wc meta box订购说明中。php,并添加了“number”,所以您只需要得到最后一个音符。

结束

相关推荐

更改回调wp_Query的POSTS_ORDERBY?

我发现this answer 这有助于在我的搜索查询中按帖子类型对查询结果排序。但问题是当我去https://example.com/?s=query%20string 如果我使用原生php搜索进行搜索。这太棒了。但我也可以通过ajax进行搜索——当我键入时,ajax将调用在自定义rest端点上注册的回调函数。因此,我想知道是否有任何方法可以识别该自定义查询,以便重用该过滤器?在条件中:if ( ! is_admin() && is_search() && is_