Search
 
SCRIPT & CODE EXAMPLE
 

PHP

Woocommerce - Adding a Custom Endpoint

<?php

/*
Plugin Name: WooCustom My Account
Plugin URI: http://wpbeaches.com/
Description: WooCustom - add a custom area in my-account
Author: Neil Gee
Version: 1.0.0
Author URI: http://wpbeaches.com
License: GPL-2.0+
License URI: http://www.gnu.org/licenses/gpl-2.0.txt
Text Domain: woocustom
Domain Path: /languages/
*/


/*
 * 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() {
		 ?>

		<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' ) );
Comment

Woocommerce Adding Content to the Custom Endpoint

add_action( 'woocommerce_account_my-stuff-endpoint_endpoint', 'gc_custom_endpoint_content' );
/**
 * Custom Endpoint content
 */
function gc_custom_endpoint_content() {
 echo 'custom end point content goes here';
}
Comment

PREVIOUS NEXT
Code Example
Php :: php is_assoc 
Php :: smtp_port" setting in php.ini or use ini_set() 
Php :: insert views laravel database 
Php :: bulk update data in db query in laravel 8 
Php :: laravel validation on update 
Php :: php check if input is a positive integer 
Php :: laravel casts pivot table 
Php :: php show hide td 
Php :: octobercms mail 
Php :: create a table using query 
Php :: magento 2 add in static block 
Php :: how to enable auto refresh on save 
Php :: php echo example 
Php :: jsondecode 
Php :: cors header ‘access-control-allow-origin’ missing IN PARTICULAR CAKEPHP API 
Php :: how to get today week month ad year data in eloquent 
Php :: wordpress theme basics including CSS and js 
Php :: return response at failedValidation() in request laravel 
Php :: laravel route regex except 
Php :: count array index foreach in php 
Php :: bool value of blank string inp php 
Php :: server.php not found 
Php :: laravel set timezone dynamically 
Php :: php console print 
Php :: php superglobal - $globals 
Php :: php pass a function as a parameter 
Php :: scss laravel 
Php :: how to logout in phpmyadmin 
Php :: Remove White Space At Sides 
Php :: gate and policy in laravel 
ADD CONTENT
Topic
Content
Source link
Name
5+2 =