WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress
класс не описан

Yoast_Product{} Yoast 1.0

Class Yoast_Product

Хуков нет.

Возвращает

Null. Ничего.

Использование

$Yoast_Product = new Yoast_Product();
// use class methods

Методы

  1. __construct( $api_url, $item_name, $slug, $version, $item_url = '', $license_page_url = '#', $text_domain = 'yoast', $author = 'Yoast', $file = '', $product_id = 0 )
  2. add_campaign_attributes( $url, $link_identifier )
  3. get_api_url()
  4. get_author()
  5. get_extension_url( $link_identifier = '' )
  6. get_file()
  7. get_item_name()
  8. get_item_url()
  9. get_license_page_url()
  10. get_product_id()
  11. get_slug()
  12. get_text_domain()
  13. get_tracking_url( $link_identifier = '' )
  14. get_transient_prefix()
  15. get_version()
  16. set_api_url( $api_url )
  17. set_author( $author )
  18. set_extension_url( $extension_url )
  19. set_file( $file )
  20. set_item_name( $item_name )
  21. set_item_url( $item_url )
  22. set_license_page_url( $license_page_url )
  23. set_product_id( $product_id )
  24. set_slug( $slug )
  25. set_text_domain( $text_domain )
  26. set_version( $version )

Код Yoast_Product{} Yoast 15.1.1

<?php
class Yoast_Product {

	/**
	 * @var string The URL of the shop running the EDD API.
	 */
	protected $api_url;

	/**
	 * @var string The item name in the EDD shop.
	 */
	protected $item_name;

	/**
	 * @var string The theme slug or plugin file
	 */
	protected $slug;

	/**
	 * @var string The version number of the item
	 */
	protected $version;

	/**
	 * @var string The absolute url on which users can purchase a license
	 */
	protected $item_url;

	/**
	 * @var string Absolute admin URL on which users can enter their license key.
	 */
	protected $license_page_url;

	/**
	 * @var string The text domain used for translating strings
	 */
	protected $text_domain;

	/**
	 * @var string The item author
	 */
	protected $author;

	/**
	 * @var string Relative file path to the plugin.
	 */
	protected $file;

	/** @var int Product ID in backend system for quick lookup */
	protected $product_id;

	/** @var string URL referring to the extension page  */
	protected $extension_url;

	/**
	 * Yoast_Product constructor.
	 *
	 * @param string $api_url          The URL of the shop running the EDD API.
	 * @param string $item_name        The item name in the EDD shop.
	 * @param string $slug             The slug of the plugin, for shiny updates this needs to be a valid HTML id.
	 * @param string $version          The version number of the item.
	 * @param string $item_url         The absolute url on which users can purchase a license.
	 * @param string $license_page_url Absolute admin URL on which users can enter their license key.
	 * @param string $text_domain      The text domain used for translating strings.
	 * @param string $author           The item author.
	 * @param string $file             The relative file path to the plugin.
	 * @param int    $product_id       The ID of the product in the backend system.
	 */
	public function __construct( $api_url, $item_name, $slug, $version, $item_url = '', $license_page_url = '#', $text_domain = 'yoast', $author = 'Yoast', $file = '', $product_id = 0 ) {
		$this->set_api_url( $api_url );
		$this->set_item_name( $item_name );
		$this->set_slug( $slug );
		$this->set_version( $version );
		$this->set_item_url( $item_url );
		$this->set_text_domain( $text_domain );
		$this->set_author( $author );
		$this->set_file( $file );
		$this->set_product_id( $product_id );
		$this->set_license_page_url( $license_page_url );
	}

	/**
	 * @param string $api_url
	 */
	public function set_api_url( $api_url ) {
		$this->api_url = $api_url;
	}

	/**
	 * @return string
	 */
	public function get_api_url() {
		return $this->api_url;
	}

	/**
	 * @param string $author
	 */
	public function set_author( $author ) {
		$this->author = $author;
	}

	/**
	 * @return string
	 */
	public function get_author() {
		return $this->author;
	}

	/**
	 * @param string $item_name
	 */
	public function set_item_name( $item_name ) {
		$this->item_name = $item_name;
	}

	/**
	 * @return string
	 */
	public function get_item_name() {
		return $this->item_name;
	}

	/**
	 * @param string $item_url
	 */
	public function set_item_url( $item_url ) {
		if ( empty( $item_url ) ) {
			$item_url = $this->api_url;
		}

		$this->item_url = $item_url;
	}

	/**
	 * @return string
	 */
	public function get_item_url() {
		return $this->item_url;
	}

	/**
	 * @param string $license_page_url
	 */
	public function set_license_page_url( $license_page_url ) {

		if ( is_admin() && is_multisite() ) {

			if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
				require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
			}

			if ( is_plugin_active_for_network( $this->get_file() ) ) {
				$this->license_page_url = network_admin_url( $license_page_url );

				return;
			}
		}

		$this->license_page_url = admin_url( $license_page_url );
	}

	/**
	 * @return string
	 */
	public function get_license_page_url() {
		return $this->license_page_url;
	}

	/**
	 * @param string $slug
	 */
	public function set_slug( $slug ) {
		$this->slug = $slug;
	}

	/**
	 * @return string
	 */
	public function get_slug() {
		return $this->slug;
	}

	/**
	 * Returns the dirname of the slug and limits it to 15 chars
	 *
	 * @return string
	 */
	public function get_transient_prefix() {
		return substr( md5( $this->file ), 0, 15 );
	}

	/**
	 * @param string $text_domain
	 */
	public function set_text_domain( $text_domain ) {
		$this->text_domain = $text_domain;
	}

	/**
	 * @return string
	 */
	public function get_text_domain() {
		return $this->text_domain;
	}

	/**
	 * @param string $version
	 */
	public function set_version( $version ) {
		$this->version = $version;
	}

	/**
	 * @return string
	 */
	public function get_version() {
		return $this->version;
	}

	/**
	 * Returns the file path relative to the plugins folder
	 *
	 * @return string
	 */
	public function get_file() {
		/*
		 * Fall back to the slug for BC reasons.
		 *
		 * We used to pass the file to the slug field, but this isn't supported with the shiny updates in WordPress.
		 * WordPress uses the slug in the HTML as an ID and a slash isn't a valid
		 */
		return empty( $this->file ) ? $this->slug : $this->file;
	}

	/**
	 * Sets the file path relative to the plugins folder
	 *
	 * @param string $file Relative file path to the plugin.
	 */
	public function set_file( $file ) {
		$this->file = $file;
	}

	/**
	 * Return the Product ID
	 *
	 * @return int
	 */
	public function get_product_id() {
		return $this->product_id;
	}

	/**
	 * Set the product ID
	 *
	 * @param int $product_id Product ID to set.
	 */
	public function set_product_id( $product_id ) {
		$this->product_id = (int) $product_id;
	}

	/**
	 * Gets a Google Analytics Campaign url for this product
	 *
	 * @param string $link_identifier
	 *
	 * @return string The full URL
	 */
	public function get_tracking_url( $link_identifier = '' ) {
		return $this->add_campaign_attributes( $this->get_item_url(), $link_identifier );
	}

	/**
	 * Returns the extension url if set, otherwise it will be the tracking url.
	 *
	 * @param string $link_identifier
	 *
	 * @return string
	 */
	public function get_extension_url( $link_identifier = '' ) {
		if ( $this->extension_url ) {
			return $this->add_campaign_attributes( $this->extension_url, $link_identifier );
		}

		return $this->get_tracking_url( $link_identifier );
	}

	/**
	 * Sets the extension url.
	 *
	 * @param string $extension_url
	 */
	public function set_extension_url( $extension_url ) {
		$this->extension_url = $extension_url;
	}

	private function add_campaign_attributes( $url, $link_identifier ) {
		$tracking_vars = array(
			'utm_campaign' => $this->get_item_name() . ' licensing',
			'utm_medium'   => 'link',
			'utm_source'   => $this->get_item_name(),
			'utm_content'  => $link_identifier
		);

		// URL encode tracking vars.
		$tracking_vars = urlencode_deep( $tracking_vars );
		$query_string = build_query( $tracking_vars );

		return $url . '#' . $query_string;
	}

}