php - WooCommerce 2.6 Custom Endpoint 404 Not Found Error -
it seems version 2.6 woocommerce have changed way endpoints , custom profile tabs made. more infor here https://woocommerce.wordpress.com/2016/04/21/tabbed-my-account-pages-in-2-6/ , and https://github.com/woothemes/woocommerce/wiki/2.6-tabbed-my-account-page
my code bellow similar 1 in these links clicking on new profile tab keeps showing 404 not found error. tried permalinks refresh , flush_rewrite_rules()
othing seems work....
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 insert new endpoint in wordpress. add_action( 'init', array( $this, 'add_endpoints' ) ); add_filter( 'query_vars', array( $this, 'add_query_vars' ), 0 ); // change accout page title. add_filter( 'the_title', array( $this, 'endpoint_title' ) ); // insering new tab/page 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 use inside 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 new endpoint account menu. * * @param array $items * @return array */ public function new_menu_items( $items ) { // remove logout menu item. $logout = $items['customer-logout']; unset( $items['customer-logout'] ); // insert custom endpoint. $items[ self::$endpoint ] = __( 'my company', 'domain' ); // insert logout item. $items['customer-logout'] = $logout; return $items; } /** * endpoint html content. */ public function endpoint_content() { ob_start(); // here 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(); } } }
does have ideas couldbe issue?
there's wrong hook... wrong timings...
these works... 0 priority or using woocommerce_init
add_action('init', '_action_ssd_wp_user_company_init', 0 );
or add_action('woocommerce_init', '_action_ssd_wp_user_company_init');
instead of add_action('init', '_action_ssd_wp_user_company_init');
you need refresh permalink settings work.
Comments
Post a Comment