BP_Theme_Compat

Theme Compatibility base class.

Description

This is only intended to be extended, and is included here as a basic guide for future Theme Packs to use. BP_Legacy is a good example of extending this class.

Parameters

$properties

(array) (Required) An array of properties describing the theme compat package.

  • 'id'
    (string) ID of the package. Must be unique.
  • 'name'
    (string) Name of the theme. This should match the name given in style.css.
  • 'version'
    (string) Theme version. Used for busting script and style browser caches.
  • 'dir'
    (string) Filesystem path of the theme.
  • 'url'
    (string) Base URL of the theme.

Source

File: bp-core/classes/class-bp-theme-compat.php

class BP_Theme_Compat {

	/**
	 * Template package properties, as passed to the constructor.
	 *
	 * @since BuddyPress 1.7.0
	 * @var array
	 */
	protected $_data = array();

	/**
	 * Pass the $properties to the object on creation.
	 *
	 * @since BuddyPress 1.7.0
	 *
	 * @param array $properties Array of properties for BP_Theme_Compat.
	 */
	public function __construct( Array $properties = array() ) {
		$this->_data = $properties;
	}

	/**
	 * Set up the BuddyPress-specific theme compat methods.
	 *
	 * Themes should use this method in their constructor.
	 *
	 * @since BuddyPress 1.7.0
	 */
	protected function start() {
		// Sanity check.
		if ( ! bp_use_theme_compat_with_current_theme() ) {
			return;
		}

		// Setup methods.
		$this->setup_globals();
		$this->setup_actions();
	}

	/**
	 * Set up global data for your template package.
	 *
	 * Meant to be overridden in your class. See
	 * {@link BP_Legacy::setup_globals()} for an example.
	 *
	 * @since BuddyPress 1.7.0
	 */
	protected function setup_globals() {}

	/**
	 * Set up theme hooks for your template package.
	 *
	 * Meant to be overridden in your class. See
	 * {@link BP_Legacy::setup_actions()} for an example.
	 *
	 * @since BuddyPress 1.7.0
	 */
	protected function setup_actions() {}

	/**
	 * Set a theme's property.
	 *
	 * @since BuddyPress 1.7.0
	 *
	 * @param string $property Property name.
	 * @param mixed  $value    Property value.
	 * @return bool True on success, false on failure.
	 */
	public function __set( $property, $value ) {
		return $this->_data[$property] = $value;
	}

	/**
	 * Get a theme's property.
	 *
	 * @since BuddyPress 1.7.0
	 *
	 * @param string $property Property name.
	 * @return mixed The value of the property if it exists, otherwise an
	 *               empty string.
	 */
	public function __get( $property ) {
		return array_key_exists( $property, $this->_data ) ? $this->_data[$property] : '';
	}
}

Changelog

Changelog
Version Description
BuddyPress 1.7.0 Introduced.

Methods

  • __construct — Pass the $properties to the object on creation.
  • __get — Get a theme's property.
  • __set — Set a theme's property.
  • setup_actions — Set up theme hooks for your template package.
  • setup_globals — Set up global data for your template package.
  • start — Set up the BuddyPress-specific theme compat methods.

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.