2016-06-29 10 views
1

Es scheint mit Version 2.6 WooCommerce haben die Art und Weise geändert Endpunkte und benutzerdefinierte Profil Tabs gemacht. Weitere Informationen hier https://woocommerce.wordpress.com/2016/04/21/tabbed-my-account-pages-in-2-6/ und undWooCommerce 2.6 Benutzerdefinierte Endpoint 404 nicht gefunden Fehler

Mein Code unten ist fast wie der in diesen Links, aber das Klicken auf die neue Profil Registerkarte zeigt weiterhin die 404 Not Found Fehler. Ich habe versucht, Permalinks neu geladen und flush_rewrite_rules() aber ichts scheint zu funktionieren ....

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(); 
     } 
    } 
} 

Hat jemand irgendwelche Ideen, was das Problem CouldBe?

Antwort

3

, es ist etwas falsch mit Ihrem Haken ... falschen Timings ...

diese Arbeiten ... mit 0 Priorität oder mit woocommerce_init
add_action('init', '_action_ssd_wp_user_company_init', 0); oder add_action('woocommerce_init', '_action_ssd_wp_user_company_init');

statt add_action('init', '_action_ssd_wp_user_company_init');

Sie müssen Permalink-Einstellungen aktualisieren, damit dies funktioniert.

+0

Ja, das war es. Vielen Dank! – Ziik

+0

Gehen zu den Permalink-Einstellungen in WP und nur noch einmal zu speichern funktioniert für mich. Vielen Dank! – Tessa