2017-06-02 14 views
-3

私は「My Account」、「My Orders」などの編集メニューが必要です。そのメニューに新しいリンクを追加したいのですが、私は管理パネルで編集できませんし、woocommerceが作成するテンプレートを見つけることができませんメニュー。WooCommerceメニューはどのように編集できますか?

+0

公式関連ドキュメント:[2.6+でタブ付きの「マイアカウント」ページ](https://woocommerce.wordpress.com/2016/04/21/tabbed-my-account-pages-in-2- 6 /) – LoicTheAztec

答えて

0

あなたは解決策hereを見つけることができます。
それは私のために働いて、私もあなたのために働くと思う。

<?php 
/* 
* Add custom endpoint that appears in My Account Page - WooCommerce 2.6 
* New URL below as Claudio changed his github username 
* Ref - https://gist.github.com/claudiosanches/a79f4e3992ae96cb821d3b357834a005#file-custom-my-account-endpoint-php 
*/ 


class My_Custom_My_Account_Endpoint 
{ 

    /** 
    * Custom endpoint name. 
    * 
    * @var string 
    */ 
    public static $endpoint = 'my-custom-endpoint'; 

    /** 
    * Plugin actions. 
    */ 
    public function __construct() 
    { 
     // Actions used to insert a new endpoint in the WordPress. 
     add_action('init', array($this, 'add_endpoints')); 
     add_filter('query_vars', array($this, 'add_query_vars'), 0); 

     // Change the My Accout page title. 
     add_filter('the_title', array($this, 'endpoint_title')); 

     // Insering your new tab/page into the My Account page. 
     add_filter('woocommerce_account_menu_items', array($this, 'new_menu_items')); 
     add_action('woocommerce_account_' . self::$endpoint . '_endpoint', array($this, 'endpoint_content')); 
    } 

    /** 
    * Register new endpoint to use inside My Account page. 
    * 
    * @see https://developer.wordpress.org/reference/functions/add_rewrite_endpoint/ 
    */ 
    public function add_endpoints() 
    { 
     add_rewrite_endpoint(self::$endpoint, EP_ROOT | EP_PAGES); 
    } 

    /** 
    * Add new query var. 
    * 
    * @param array $vars 
    * @return array 
    */ 
    public function add_query_vars($vars) 
    { 
     $vars[] = self::$endpoint; 

     return $vars; 
    } 

    /** 
    * Set endpoint title. 
    * 
    * @param string $title 
    * @return string 
    */ 
    public function endpoint_title($title) 
    { 
     global $wp_query; 

     $is_endpoint = isset($wp_query->query_vars[ self::$endpoint ]); 

     if ($is_endpoint && ! is_admin() && is_main_query() && in_the_loop() && is_account_page()) { 
      // New page title. 
      $title = __('My Stuff', 'woocommerce'); 

      remove_filter('the_title', array($this, 'endpoint_title')); 
     } 

     return $title; 
    } 

    /** 
    * Insert the new endpoint into the My Account menu. 
    * 
    * @param array $items 
    * @return array 
    */ 
    public function new_menu_items($items) 
    { 
     // Remove the logout menu item. 
     $logout = $items['customer-logout']; 
     unset($items['customer-logout']); 
     // Insert your custom endpoint. 
     $items[ self::$endpoint ] = __('My Stuff', 'woocommerce'); 

     // Insert back the logout item. 
     $items['customer-logout'] = $logout; 

     return $items; 
    } 

    /** 
    * Endpoint HTML content. 
    */ 
    public function endpoint_content() 
    { 
     wc_get_template('myaccount/navigation.php'); ?> 

     <div class="woocommerce-MyAccount-content"> 

      <p>Hello World! - custom field can go here</p> 

     </div> 

     <?php 
    } 

    /** 
    * Plugin install action. 
    * Flush rewrite rules to make our custom endpoint available. 
    */ 
    public static function install() 
    { 
     flush_rewrite_rules(); 
    } 
} 

new My_Custom_My_Account_Endpoint(); 

// Flush rewrite rules on plugin activation. 
register_activation_hook(__FILE__, array('My_Custom_My_Account_Endpoint', 'install')); 
関連する問題