2016-06-29 27 views
1

バージョン2.6のようです。WooCommerceがエンドポイントとカスタムプロファイルのタブの作成方法を変更しました。その他の情報https://woocommerce.wordpress.com/2016/04/21/tabbed-my-account-pages-in-2-6/https://github.com/woothemes/woocommerce/wiki/2.6-Tabbed-My-Account-page 私のコードは、これらのリンクとほぼ同じですが、新しいプロファイルタブをクリックすると404 Not Foundエラーが表示され続けます。私は、誰もが問題をcouldbe何任意のアイデアを持っていWooCommerce 2.6カスタムエンドポイント404が見つかりませんでした。エラー

if (!class_exists('My_WC_User_Company')) { 
    class My_WC_User_Company { 

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

     /** 
     * 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 Company', 'domain'); 

       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 Company', 'domain'); 

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

      return $items; 
     } 

     /** 
     * Endpoint HTML content. 
     */ 
     public function endpoint_content() { 

      ob_start(); 

      // here is some content ?> 

      <?php 

      $output = ob_get_clean(); 
      echo $output; 
     } 

    } 
} 


add_action('init', '_action_ssd_wp_user_company_init'); 

if(!(function_exists('_action_ssd_wp_user_company_init'))){ 
    function _action_ssd_wp_user_company_init(){ 
     if ( get_current_user_id() && get_user_meta(get_current_user_id(), 'user_company', true) == 'yes') { 
      new My_WC_User_Company(); 
     } 
    } 
} 

....パーマリンクをリフレッシュしようとしたが、flush_rewrite_rules() othingは動作するようですか?あなたのフック...間違ったタイミングに何か問題があります

答えて

3

...

これらの作品... 0優先順位を持つかwoocommerce_init
add_action('init', '_action_ssd_wp_user_company_init', 0); または add_action('woocommerce_init', '_action_ssd_wp_user_company_init');

代わりのadd_action('init', '_action_ssd_wp_user_company_init');

を使用して

これを機能させるには、パーマリンクの設定を更新する必要があります。

+0

はい、それでした。ありがとうございました! – Ziik

+0

WPのpermalinkの設定に行き、もう一度保存してくれました。ありがとう! – Tessa

関連する問題