add_action 与 "woocommerce_account_dashboard" 挂钩错位
add_action with "woocommerce_account_dashboard" hook is misplaced
我最近安装了一个非常简单的插件,可以在导航菜单之前的 woocommerce 帐户页面中显示用户头像。
我一直在尝试包含该功能,以便通过 woocommerce_account_dashboard
挂钩在帐户仪表板中显示头像,但它的位置不符合我的预期。
在/templates/myaccount/dashboard.php文件中,我做了如下改动:
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
$allowed_html = array(
'a' => array(
'href' => array(),
),
);
?>
<p class="pix-mb-0">
<?php
add_action('woocommerce_account_dashboard', 'uafw_show_avatar_woo', 10, 0 );
printf(
/* translators: 1: user display name 2: logout url */
wp_kses( __( 'Hello %1$s!', 'woocommerce' ), $allowed_html ),
'<strong class="text-yellow">' . esc_html( $current_user->display_name ) . '</strong>',
esc_url( wc_logout_url() )
);
?>
</p>
<p class="text-xs">
<?php $current_user = wp_get_current_user();
$current_user_id = $current_user->ID;
echo __('Account ID: '), $current_user_id; ?>
</p>
<h1 class="h5 text-heading-default font-weight-bold pix-ready pix-mb-10" style="padding-bottom: 0.3em; border-bottom: 1px solid rgba(255,255,255,0.1)">Recent Orders</h1>
<?php add_action( 'woocommerce_account_dashboard', 'action_rorders_woocommerce_account_dashboard', 30, 0 ); ?>
<?php
/**
* My Account dashboard.
*
* @since 2.6.0
*/
do_action( 'woocommerce_account_dashboard' );
第一个函数调用是我要显示的头像,第二个是显示最近订单的函数。
一切正常,但头像没有显示在 'welcome' 段落之前,而是显示在订单 table 的正上方。
我试图打乱优先级,但也没用。我错过了什么?
“一切正常,但头像没有显示在 'welcome' 段落之前,而是显示在订单 table 的正上方。”
This is because the callback function of your add_action
is executed where the do_action
is located
假设这是您调用的函数的输出:
function uafw_show_avatar_woo() {
echo '<div>Show avatar woo</div>';
}
步骤1)然后在模板文件中,要调用和显示功能的地方,只需要使用:
<?php uafw_show_avatar_woo(); ?>
或
步骤 1) 创建您自己的 do_action
,将其添加到您要显示回调函数输出的位置:
<?php do_action( 'my_custom_do_action' ); ?>
步骤 2) 然后通过 add_action
执行 do_action
add_action( 'my_custom_do_action', 'uafw_show_avatar_woo' );
我最近安装了一个非常简单的插件,可以在导航菜单之前的 woocommerce 帐户页面中显示用户头像。
我一直在尝试包含该功能,以便通过 woocommerce_account_dashboard
挂钩在帐户仪表板中显示头像,但它的位置不符合我的预期。
在/templates/myaccount/dashboard.php文件中,我做了如下改动:
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
$allowed_html = array(
'a' => array(
'href' => array(),
),
);
?>
<p class="pix-mb-0">
<?php
add_action('woocommerce_account_dashboard', 'uafw_show_avatar_woo', 10, 0 );
printf(
/* translators: 1: user display name 2: logout url */
wp_kses( __( 'Hello %1$s!', 'woocommerce' ), $allowed_html ),
'<strong class="text-yellow">' . esc_html( $current_user->display_name ) . '</strong>',
esc_url( wc_logout_url() )
);
?>
</p>
<p class="text-xs">
<?php $current_user = wp_get_current_user();
$current_user_id = $current_user->ID;
echo __('Account ID: '), $current_user_id; ?>
</p>
<h1 class="h5 text-heading-default font-weight-bold pix-ready pix-mb-10" style="padding-bottom: 0.3em; border-bottom: 1px solid rgba(255,255,255,0.1)">Recent Orders</h1>
<?php add_action( 'woocommerce_account_dashboard', 'action_rorders_woocommerce_account_dashboard', 30, 0 ); ?>
<?php
/**
* My Account dashboard.
*
* @since 2.6.0
*/
do_action( 'woocommerce_account_dashboard' );
第一个函数调用是我要显示的头像,第二个是显示最近订单的函数。
一切正常,但头像没有显示在 'welcome' 段落之前,而是显示在订单 table 的正上方。
我试图打乱优先级,但也没用。我错过了什么?
“一切正常,但头像没有显示在 'welcome' 段落之前,而是显示在订单 table 的正上方。”
This is because the callback function of your
add_action
is executed where thedo_action
is located
假设这是您调用的函数的输出:
function uafw_show_avatar_woo() {
echo '<div>Show avatar woo</div>';
}
步骤1)然后在模板文件中,要调用和显示功能的地方,只需要使用:
<?php uafw_show_avatar_woo(); ?>
或
步骤 1) 创建您自己的 do_action
,将其添加到您要显示回调函数输出的位置:
<?php do_action( 'my_custom_do_action' ); ?>
步骤 2) 然后通过 add_action
do_action
add_action( 'my_custom_do_action', 'uafw_show_avatar_woo' );