如何解决仅在 WooCommerce 我的帐户仪表板中添加自定义 html 内容
我将 wordpress 与 WooCommerce 和 WooCommerce 订阅插件一起使用,并且按照我的要求运行良好。
现在我想在登录系统后在 div
页面即 (http://www.example.com/my-account) 添加我的自定义 /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/
页面中显示此内容?此外,如何通过复制我的活动主题之一来覆盖此页面,以便我不需要更改插件的核心文件?
解决方法
要使其仅显示在我的帐户仪表板中而不覆盖任何模板文件,您可以改用以下挂钩函数:
add_action( 'woocommerce_account_dashboard','custom_account_dashboard_content' );
function custom_account_dashboard_content(){
echo '<div>' . __("Test","woocommerce") . '</div>';
}
代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。
自定义 html 内容仅按预期添加到我的帐户仪表板(不覆盖任何模板文件):
注意:这需要替换回 WooCommerce 原始相关模板文件。
,您在模板方面走在正确的轨道上,但还不够深入。我们可以通过另一个 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>
覆盖模板
您可能希望在您的主题中覆盖该模板,因此在您的主题中,创建这样的文件夹/文件结构:
[yourtheme]/woocommerce/myaccount/dashboard.php
。您有意不在主题覆盖中包含 templates
。您可以将 dashboard.php
复制到此文件夹中并编辑该版本。
有一些关于模板结构和覆盖的开发人员文档,可以在这里查看:https://docs.woocommerce.com/document/template-structure/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。