![](/img/trans.png)
[英]Add a custom item above logout item in Woocommerce my account menu
[英]WooCommerce My Account custom endpoint menu item
我正在做一個我的帳戶頁面是主頁的項目。 所以我做了什么,我創建了一個包含短[woocommerce_my_account]
的頁面,並從儀表板->設置->閱讀創建了這個頁面主頁。 一切正常。 我也有這個工作端點:
但是,當我制作自定義 myaccount 端點時,我遇到了麻煩。 我正在以這種傳統方式進行操作:
add_action('woocommerce_account_custom-endpoint_endpoint', function(){
echo 'hello';
} );
add_action('init', function() {
add_rewrite_endpoint('custom-endpoint', EP_ROOT | EP_PAGES);
});
但是 mydomain.com/custom-endpoint 不是指向我的帳戶頁面,而是指向 index.php 或 page.php(WordPress 模板層次結構)。
我很想知道為什么會這樣?
更新:
重要提示:您首先需要在以下位置聲明您的主頁為“我的帳戶”頁面:
WooCommerce 設置 > 高級 > 我的帳戶頁面字段。
使用以下內容:
// Enable endpoint
add_filter( 'woocommerce_get_query_vars', 'myaccount_custom_endpoint_query_var' );
function myaccount_custom_endpoint_query_var( $query_vars ) {
$query_vars['custom-endpoint'] = 'custom-endpoint';
return $query_vars;
}
// Endpoint displayed content
add_action('woocommerce_account_custom-endpoint_endpoint', 'display_custom_endpoint_content' );
function display_custom_endpoint_content(){
echo '<p>' . __("hello") . '</p>';
}
您也可以選擇使用以下內容:
// Add it as my account menu item
add_filter ( 'woocommerce_account_menu_items', 'custom_account_menu_items', 10 );
function custom_account_menu_items( $menu_links ){
$menu_links = array_slice( $menu_links, 0,3 , true )
+ array( 'custom-endpoint' => __('Custom Endpoint') )
+ array_slice( $menu_links, 3, NULL, true );
return $menu_links;
}
// Endpoint page title
add_filter( 'woocommerce_endpoint_custom-endpoint_title', 'set_my_account_custom_endpoint_title', 10, 2 );
function set_my_account_custom_endpoint_title( $title, $endpoint ) {
$title = __( "Custom Endpoint", "woocommerce" );
return $title;
}
代碼進入活動子主題(或活動主題)的functions.php文件。
編輯:鈎子woocommerce_get_query_vars
是強制性的,並替換處理add_rewrite_endpoint()
的 function ,不再需要(感謝@Jitu) 。
如果需要,您可以通過轉到 Wordpress 設置 > 永久鏈接和“保存更改”來刷新重寫規則。
測試和工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.