我正在尝试将自定义模板account-details.php
添加到我的帐户区域中的新端点。
我首先添加了新的帐户详细信息端点:
add_action( 'init', 'co_add_my_account_endpoint' );
function co_add_my_account_endpoint() {
add_rewrite_endpoint( 'account-details', EP_ROOT | EP_PAGES );
}
在这里添加自定义模板:
add_filter( 'wc_get_template', 'co_custom_endpoint', 10, 5 );
/**
* Add account details custom template
*
* @param $located
* @param $template_name
* @param $args
* @param $template_path
* @param $default_path
* @since 2.0
* @return string $located
*/
function co_custom_endpoint($located, $template_name, $args, $template_path, $default_path) {
global $wp;
if( 'myaccount/my-account.php' == $template_name ) {
$located = wc_locate_template( 'myaccount/account-details.php', $template_path, JGTB_PATH . 'templates/' );
}
return $located;
}
最后,我手动刷新了重写规则,但是我的模板仍未在前端加载。有人可以看到我在做什么错吗? 我在堆栈溢出方面发现了与此相关的其他帖子,但是如果我完全复制同样的内容,对我也不起作用。
非常感谢您的帮助!
答案 0 :(得分:1)
对活动主题的function.php
使用以下代码。
function custom_account_details_page_endpoints() {
add_rewrite_endpoint( 'account-details', EP_ROOT | EP_PAGES );
}
add_action( 'init', 'custom_account_details_page_endpoints' );
function custom_account_details_query_vars( $vars ) {
$vars[] = 'account-details';
return $vars;
}
add_filter( 'query_vars', 'custom_account_details_query_vars', 0 );
function custom_account_details_query_vars_flush_rewrite_rules() {
flush_rewrite_rules();
}
add_action( 'wp_loaded', 'custom_account_details_query_vars_flush_rewrite_rules' );
请确保将account-details.php
文件放在myaccount
文件夹中。
function custom_account_details_endpoint_content() {
include 'woocommerce/myaccount/account-details.php';
}
add_action( 'woocommerce_account_account-details_endpoint', 'custom_account_details_endpoint_content' );
通过执行此操作,请确保通过访问仪表板->设置->永久链接和save settings
上的提示来更新永久链接