仅在 WooCommerce 我的帐户仪表板中添加自定义 html 内容
Add custom html content in WooCommerce My Account Dashboard only
我将 WordPress 与 WooCommerce 和 WooCommerce 订阅插件一起使用,并且按照我的要求工作正常。
现在我想在 /my-account/
页面中添加我的自定义 div
,即我们登录系统后的 (http://www.example.com/my-account)。
所以我研究并发现了这个页面 /wp-content/plugins/woocommerce/templates/myaccount/my-account.php
并且那个页面有下面的代码。
<?php
defined( 'ABSPATH' ) || exit;
do_action( 'woocommerce_account_navigation' ); ?>
<div class="woocommerce-MyAccount-content">
<?php
do_action( 'woocommerce_account_content' );
?>
</div>
因此我添加了类似这样的代码
<div>Test</div>
低于 do_action( 'woocommerce_account_content' );
但随后它出现在所有页面中,如 my-account/orders/
、 /my-account/downloads/
等。我不想要它。
如何才能仅在 /my-account/
页面中显示此内容?此外,我如何才能通过复制我的一个活动主题来覆盖此页面,这样我就不需要对插件的核心文件进行更改?
您在使用模板方面走在了正确的轨道上,但还不够深入。我们可以通过另一个 do_action()
看到它仍在您正在处理的代码中引入另一个模板 - 在本例中,是专门用于该仪表板页面的代码。
要更改的代码
而不是
/wp-content/plugins/woocommerce/templates/myaccount/my-account.php
,你想去:
/wp-content/plugins/woocommerce/templates/myaccount/dashboard.php
.
在那里,您会找到这段代码(显示默认消息),您可以在那里添加您的自定义 div,它只会显示在仪表板上。在第 50 行左右(截至撰写本文时),您会看到
printf(
wp_kses( $dashboard_desc, $allowed_html ),
esc_url( wc_get_endpoint_url( 'orders' ) ),
esc_url( wc_get_endpoint_url( 'edit-address' ) ),
esc_url( wc_get_endpoint_url( 'edit-account' ) )
);
?>
</p>
您可以在结束 </p>
下添加任何自定义代码以保留在该段落下。如果你想要它在段落之上,你会在第 41 行附近开始写,在结束 </p>
之后再次
覆盖模板
您可能希望在您的主题中覆盖该模板,因此在您的主题中,创建一个 folder/file 结构,如下所示:
[yourtheme]/woocommerce/myaccount/dashboard.php
。您有意不在主题覆盖中包含 templates
。您可以将 dashboard.php
复制到此文件夹并编辑该版本。
这里有一些关于模板结构和覆盖的开发人员文档,可能适合在此处查看:https://docs.woocommerce.com/document/template-structure/
要使其仅显示在“我的帐户”仪表板中而不覆盖任何模板文件,您可以改用以下挂钩函数:
add_action( 'woocommerce_account_dashboard', 'custom_account_dashboard_content' );
function custom_account_dashboard_content(){
echo '<div>' . __("Test", "woocommerce") . '</div>';
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
自定义 html 内容仅按预期添加到我的帐户仪表板 (未覆盖任何模板文件):
注意:这需要替换回WooCommerce原始相关模板文件。
我将 WordPress 与 WooCommerce 和 WooCommerce 订阅插件一起使用,并且按照我的要求工作正常。
现在我想在 /my-account/
页面中添加我的自定义 div
,即我们登录系统后的 (http://www.example.com/my-account)。
所以我研究并发现了这个页面 /wp-content/plugins/woocommerce/templates/myaccount/my-account.php
并且那个页面有下面的代码。
<?php
defined( 'ABSPATH' ) || exit;
do_action( 'woocommerce_account_navigation' ); ?>
<div class="woocommerce-MyAccount-content">
<?php
do_action( 'woocommerce_account_content' );
?>
</div>
因此我添加了类似这样的代码
<div>Test</div>
低于 do_action( 'woocommerce_account_content' );
但随后它出现在所有页面中,如 my-account/orders/
、 /my-account/downloads/
等。我不想要它。
如何才能仅在 /my-account/
页面中显示此内容?此外,我如何才能通过复制我的一个活动主题来覆盖此页面,这样我就不需要对插件的核心文件进行更改?
您在使用模板方面走在了正确的轨道上,但还不够深入。我们可以通过另一个 do_action()
看到它仍在您正在处理的代码中引入另一个模板 - 在本例中,是专门用于该仪表板页面的代码。
要更改的代码
而不是
/wp-content/plugins/woocommerce/templates/myaccount/my-account.php
,你想去:
/wp-content/plugins/woocommerce/templates/myaccount/dashboard.php
.
在那里,您会找到这段代码(显示默认消息),您可以在那里添加您的自定义 div,它只会显示在仪表板上。在第 50 行左右(截至撰写本文时),您会看到
printf(
wp_kses( $dashboard_desc, $allowed_html ),
esc_url( wc_get_endpoint_url( 'orders' ) ),
esc_url( wc_get_endpoint_url( 'edit-address' ) ),
esc_url( wc_get_endpoint_url( 'edit-account' ) )
);
?>
</p>
您可以在结束 </p>
下添加任何自定义代码以保留在该段落下。如果你想要它在段落之上,你会在第 41 行附近开始写,在结束 </p>
覆盖模板
您可能希望在您的主题中覆盖该模板,因此在您的主题中,创建一个 folder/file 结构,如下所示:
[yourtheme]/woocommerce/myaccount/dashboard.php
。您有意不在主题覆盖中包含 templates
。您可以将 dashboard.php
复制到此文件夹并编辑该版本。
这里有一些关于模板结构和覆盖的开发人员文档,可能适合在此处查看:https://docs.woocommerce.com/document/template-structure/
要使其仅显示在“我的帐户”仪表板中而不覆盖任何模板文件,您可以改用以下挂钩函数:
add_action( 'woocommerce_account_dashboard', 'custom_account_dashboard_content' );
function custom_account_dashboard_content(){
echo '<div>' . __("Test", "woocommerce") . '</div>';
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
自定义 html 内容仅按预期添加到我的帐户仪表板 (未覆盖任何模板文件):
注意:这需要替换回WooCommerce原始相关模板文件。