Tabla de contenido
Esta sección presenta un ejemplo real de cómo mostrar una lista del historial de pedidos de woocommerce en la miniapp LIFF de Line, una función introducida brevemente en el capítulo 1.
1 Recuperar el historial de pedidos con un solo gancho
Puede recuperar todo el historial de pedidos ejecutando sólo el hook «woocommerce_account_orders_endpoint».
protected function do_action()
{
add_filter('woocommerce_my_account_my_orders_query', [$this, 'orders_query']);
ob_start();
do_action('woocommerce_account_orders_endpoint');
$this->main_contents .= '<h3>注文履歴</h3>';
$this->main_contents .= ob_get_clean();
$this->main_contents .=
sprintf(
'<h5>直近の注文履歴から最大 %s 件を表示します。</h5>',
self::ORDER_NUM_LIMIT
);
remove_filter('woocommerce_my_account_my_orders_query', [$this, 'orders_query']);
return true;
}
2 Personalizar los criterios de recuperación del historial de pedidos
Para mostrar el historial de un usuario concreto en la miniapp de Line, que tiene un área de visualización limitada, es inevitable especificar condiciones adicionales.
Por lo tanto, el hook de filtro «woocommerce_my_account_my_orders_query» se puede utilizar para sobrescribir los criterios de búsqueda.
public function orders_query($arg)
{
$arg['customer'] = $this->user->ID; // 顧客を指定
$arg['post_status'] = array('wc-processing', 'wc-completed'); // 注文ステータスを指定
$arg['limit'] = self::ORDER_NUM_LIMIT; // 最大取得件数を指定
return $arg;
}
3 Minimizar el alcance de las operaciones del historial de pedidos
El hook «woocommerce_account_orders_endpoint» es sólo una acción para ser utilizada en la página web del endpoint «myaccount»; ¡hay mucho contenido para mostrar en una página normal! Por ejemplo. en el caso de «micuenta», hay casos en los que aparecen varios botones a la vez en el campo «operación», como «mostrar, factura, albarán, forma de pago». Debido al área limitada de la miniaplicación, sólo debe utilizarse «Ver (.view)».
.woocommerce-button:not(.view){
/*表示ボタン以外の操作は非表示*/
display: none;
}
4 Inicio de sesión automático fácil de usar.
Aparece la lista del historial de pedidos dentro de Line. Si quieres ver los detalles de tu historial en Line, tienes que intervenir iniciando sesión en el sitio. Si ha adquirido un idToken de Línea y ha identificado al usuario, puede hacer que se conecte automáticamente al mismo tiempo que visualiza los detalles del pedido en la Línea.
Extrae la URL especificada como endpoint ‘myaccount’ con preg_match_all y conviértela en una URL de inicio de sesión automático en un lote.
protected function set_mypage_auto_linelogin()
{
$pattarn = str_replace(['/', '.'], ['/', '.'], wc_get_page_permalink('myaccount')); // endpoint「myaccount」のURLを正規表現に
$pattarn = '/href="' . $pattarn . '(.*?)"/i';
if (preg_match_all($pattarn, $this->main_contents, $matched_url)) {
$replace_from = array();
$replace_to = array();
foreach ($matched_url[0] as $index => $url) {
$replace_from[] = $matched_url[1][$index];
$replace_to[] = $this->line_login->get_auto_linelogin_url($matched_url[1][$index]);
}
$this->main_contents = str_replace($replace_from, $replace_to, $this->main_contents);
}
}
5 Conclusión.
Si los pedidos de las tiendas en línea pueden visualizarse en Line con un solo clic, mejorará el servicio y aumentará la confianza en la tienda.
Anteriormente, la información del usuario se obtenía en formato de paso de modo Bot ( API de mensajería ), pero a partir de junio de 2023 el límite gratuito para el modo Pot (API de mensajería ) se reducirá de 1000 a 200 mensajes. Pasar a una miniaplicación (LIFF) puede ser una opción.
Y si buscas más código fuente o estás interesado en el desarrollo de LIFF y quieres intercambiar opiniones sobre LIFE, entra y deja un comentario.