Skip to:
Content
Pages
Categories
Search
Top
Bottom

why page templates not working on buddypress


  • rando
    Participant

    @woahmazing

    why buddypress don’t work with page templates ?

    i want to show the members page in custom templates (:

Viewing 3 replies - 1 through 3 (of 3 total)

  • Varun Dubey
    Participant

    @vapvarun

    @woahmazing you can override the template inside the child theme and apply custom design

    Template Hierarchy


    rando
    Participant

    @woahmazing

    hi vapvarun and thank you for replying back (: ,

    i tried to write a code to override the main template – and i make the script run as a plugin
    here what i did

    <?php
    /*
    Plugin Name: PAGTEM
    Plugin URI: https://www.example.com
    Version: 0.0.1
    Author: NULL
    Author URI: https://www.example.com
    */
    
    class PageTemplate {
    
    	/**
    	 * A reference to an instance of this class.
    	 */
    	private static $instance;
    
    	/**
    	 * The array of templates that this plugin tracks.
    	 */
    	protected $templates;
    
    	/**
    	 * Returns an instance of this class.
    	 */
    	public static function get_instance() {
    
    		if ( null == self::$instance ) {
    			self::$instance = new PageTemplate();
    		}
    
    		return self::$instance;
    
    	}
    
    	/**
    	 * Initializes the plugin by setting filters and administration functions.
    	 */
    	private function __construct() {
    
    		$this->templates = array();
    
    		// Add a filter to the attributes metabox to inject template into the cache.
    		if ( version_compare( floatval( get_bloginfo( 'version' ) ), '4.7', '<' ) ) {
    
    			// 4.6 and older
    			add_filter(
    				'page_attributes_dropdown_pages_args',
    				array( $this, 'register_project_templates' )
    			);
    
    		} else {
    
    			add_filter(
    				'theme_page_templates', array( $this, 'add_new_template' )
    			);
    
    		}
    
    		// Add a filter to the save post to inject out template into the page cache
    		add_filter(
    			'wp_insert_post_data',
    			array( $this, 'register_project_templates' )
    		);
    
    		// template assigned and return it's path
    		add_filter(
    			'template_include',
    			array( $this, 'view_project_template')
    		);
    
    		$this->templates = array(	
    			'FullC.php' => 'Full Canvas',
    			// this file exist in the same folder as the plugin like that 
    
    		/* Plugin Template ( Folder ) ========
    		 		  |
    		 		  |
    		 		  |
    		 	Index.php (file)
    		 	FullC.php (file) 
    	================			*/
    
    		);
    
    	}
    
    	/**
    	 * Adds template to the page dropdown for v4.7+
    	 *
    	 */
    	public function add_new_template( $posts_templates ) {
    		$posts_templates = array_merge( $posts_templates, $this->templates );
    		return $posts_templates;
    	}
    
    	/**
    	 * Adds our template to the pages cache in order to trick WordPress
    	 * into thinking the template file exists where it doens't really exist.
    	 */
    	public function register_project_templates( $atts ) {
    
    		// Create the key used for the themes cache
    		$cache_key = 'page_templates-' . md5( get_theme_root() . '/' . get_stylesheet() );
    
    		// Retrieve the cache list.
    		// If it doesn't exist, or it's empty prepare an array
    		$templates = wp_get_theme()->get_page_templates();
    		if ( empty( $templates ) ) {
    			$templates = array();
    		}
    
    		// New cache, therefore remove the old one
    		wp_cache_delete( $cache_key , 'themes');
    
    		$templates = array_merge( $templates, $this->templates );
    
    		// Add the modified cache to allow WordPress to pick it up for listing
    		// available templates
    		wp_cache_add( $cache_key, $templates, 'themes', 1800 );
    
    		return $atts;
    
    	}
    
    	/**
    	 * Checks if the template is assigned to the page
    	 */
    	public function view_project_template( $template ) {
    		// Return the search template if we're searching (instead of the template for the first result)
    		if ( is_search() ) {
    			return $template;
    		}
    
    		global $post;
    
    		// Return template if post is empty
    		if ( ! $post ) {
    			return $template;
    		}
    
    		// Return default template
    		if ( ! isset( $this->templates[get_post_meta(
    			$post->ID, '_wp_page_template', true
    		)] ) ) {
    			return $template;
    		}
    
    		// Allows filtering of file path
    		$filepath = apply_filters( 'page_templater_plugin_dir_path', plugin_dir_path( __FILE__ ) );
    
    		$file =  $filepath . get_post_meta(
    			$post->ID, '_wp_page_template', true
    		);
    
    		// check if the file exist first
    		if ( file_exists( $file ) ) {
    			return $file;
    		} else {
    			echo $file;
    		}
    
    		// Return template
    		return $template;
    
    	}
    
    }
    add_action( 'plugins_loaded', array( 'PageTemplate', 'get_instance' ) );

    now if you go to
    Pages > Edit xor Add New Page > Page Attributes > A New Section Called Templates > I Click On the Full Canvas > [UPDATED]

    Nothing Changed (:
    Why’s Is That – Is There’s Wrong With The Code Or The Buddypress V that i use ?

    i use ==> Version 6.3.0 | By The BuddyPress Community


    rando
    Participant

    @woahmazing

    never mind , thanks i figure it out after reading the

    Template Hierarchy

Viewing 3 replies - 1 through 3 (of 3 total)
  • You must be logged in to reply to this topic.
Skip to toolbar