Using the code below, I've added multiple tabs to WooCommerce's My Account tab, with just one problem: I can't display custom content for each tab, is there any way?
function pa_custom_endpoint_keys() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $pao = $wpdb->prefix . 'pao'; $results=$wpdb->get_results("select * from $pao"); $endpointsdata =array(); foreach($results as $row){ $endpointsdata[$row->pao_name] = $row->pao_value; } return $endpointsdata; } add_action( 'init', 'pa_custom_endpoint' ); function pa_custom_endpoint() { foreach(pa_custom_endpoint_keys() as $endpointkey=>$endpointlable){ add_rewrite_endpoint( $endpointkey, EP_ROOT | EP_PAGES ); } } add_filter( 'query_vars', 'pa_custom_endpoint_query_vars', 0 ); function pa_custom_endpoint_query_vars( $vars ) { foreach(pa_custom_endpoint_keys() as $endpointkey=>$endpointlable){ $vars[] = $endpointkey; } return $vars; } add_filter( 'woocommerce_account_menu_items', 'pa_custom_endpoint_link_my_account' ); function pa_custom_endpoint_link_my_account( $items ) { foreach(pa_custom_endpoint_keys() as $endpointkey=>$endpointlable){ $items[$endpointkey] = $endpointlable; } return $items; } function mine(){//i just need to make this function like this $mine(){} echo do_shortcode( ' /* your shortcode here ' ); } foreach(pa_custom_endpoint_keys() as $endpointkey=>$endpointlable){ add_action( 'woocommerce_account_' . $endpointkey . '_endpoint', 'mine' ); }
P粉0266659192023-09-07 16:02:04
$endpoints = array( 'fistkey' => 'firstlabel', 'secondkey' => 'secondlabel' ); function pa_custom_endpoint_keys() { $endpoints = array( 'fistkey' => 'firstlabel', 'secondkey' => 'secondlabel' ); foreach ($endpoints as $key => $value) { $endpointsdata[$key] = $value; } return $endpointsdata; } add_action('init', 'pa_custom_endpoint'); function pa_custom_endpoint() { $endpoints = array( 'fistkey' => 'firstlabel', 'secondkey' => 'secondlabel' ); foreach ($endpoints as $endpointkey => $endpointlable) { add_rewrite_endpoint($endpointkey, EP_ROOT | EP_PAGES); if (!get_option('plugin_permalinks_flushed')) { flush_rewrite_rules(false); update_option('plugin_permalinks_flushed', 1); } } } add_filter('query_vars', 'pa_custom_endpoint_query_vars', 0); function pa_custom_endpoint_query_vars($vars) { $endpoints = array( 'fistkey' => 'firstlabel', 'secondkey' => 'secondlabel' ); foreach ($endpoints as $endpointkey => $endpointlable) { $vars[] = $endpointkey; } return $vars; } add_filter('woocommerce_account_menu_items', 'pa_custom_endpoint_link_my_account'); function pa_custom_endpoint_link_my_account($items) { $endpoints = array( 'fistkey' => 'firstlabel', 'secondkey' => 'secondlabel' ); foreach ($endpoints as $endpointkey => $endpointlable) { $items[$endpointkey] = $endpointlable; } return $items; } function mine($endpointlable) {//i just need to make this function like this $mine(){} global $wp; $request = explode('/', $wp->request); $myaccount_current_endpoint = end($request); var_dump($myaccount_current_endpoint); exit; //echo do_shortcode(' /* your shortcode here '); } foreach ($endpoints as $endpointkey => $endpointlable) { add_action('woocommerce_account_' . $endpointkey . '_endpoint', 'mine'); }