You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
3.7 KiB
PHP
136 lines
3.7 KiB
PHP
<?php
|
|
/**
|
|
* Term variable replacer.
|
|
*
|
|
* @since 1.0.33
|
|
* @package RankMath
|
|
* @subpackage RankMath\Replace_Variables
|
|
* @author Rank Math <support@rankmath.com>
|
|
*/
|
|
|
|
namespace RankMath\Replace_Variables;
|
|
|
|
use RankMath\Helpers\Str;
|
|
use RankMath\Helpers\Param;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* Term_Variables class.
|
|
*/
|
|
class Term_Variables extends Basic_Variables {
|
|
|
|
/**
|
|
* Setup term variables.
|
|
*/
|
|
public function setup_term_variables() {
|
|
if ( $this->is_term_edit ) {
|
|
$tag_id = Param::request( 'tag_ID', 0, FILTER_VALIDATE_INT );
|
|
$term = get_term( $tag_id, $GLOBALS['taxnow'], OBJECT );
|
|
$this->args = $term;
|
|
}
|
|
|
|
$this->register_replacement(
|
|
'term',
|
|
[
|
|
'name' => esc_html__( 'Current Term', 'rank-math' ),
|
|
'description' => esc_html__( 'Current term name', 'rank-math' ),
|
|
'variable' => 'term',
|
|
'example' => $this->is_term_edit ? $term->name : esc_html__( 'Example Term', 'rank-math' ),
|
|
'nocache' => true,
|
|
],
|
|
[ $this, 'get_term' ]
|
|
);
|
|
|
|
$this->register_replacement(
|
|
'term_description',
|
|
[
|
|
'name' => esc_html__( 'Term Description', 'rank-math' ),
|
|
'description' => esc_html__( 'Current term description', 'rank-math' ),
|
|
'variable' => 'term_description',
|
|
'example' => $this->is_term_edit ? wp_strip_all_tags( term_description( $term ), true ) : esc_html__( 'Example Term Description', 'rank-math' ),
|
|
],
|
|
[ $this, 'get_term_description' ]
|
|
);
|
|
|
|
$this->register_replacement(
|
|
'customterm',
|
|
[
|
|
'name' => esc_html__( 'Custom Term (advanced)', 'rank-math' ),
|
|
'description' => esc_html__( 'Custom term value.', 'rank-math' ),
|
|
'variable' => 'customterm(taxonomy-name)',
|
|
'example' => esc_html__( 'Custom term value', 'rank-math' ),
|
|
],
|
|
[ $this, 'get_custom_term' ]
|
|
);
|
|
|
|
$this->register_replacement(
|
|
'customterm_desc',
|
|
[
|
|
'name' => esc_html__( 'Custom Term description', 'rank-math' ),
|
|
'description' => esc_html__( 'Custom Term description.', 'rank-math' ),
|
|
'variable' => 'customterm_desc(taxonomy-name)',
|
|
'example' => esc_html__( 'Custom Term description.', 'rank-math' ),
|
|
],
|
|
[ $this, 'get_custom_term_desc' ]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Get the term name to use as a replacement.
|
|
*
|
|
* @return string|null
|
|
*/
|
|
public function get_term() {
|
|
global $wp_query;
|
|
|
|
if ( is_category() || is_tag() || is_tax() ) {
|
|
return $wp_query->queried_object->name;
|
|
}
|
|
|
|
return ! empty( $this->args->taxonomy ) && ! empty( $this->args->name ) ? $this->args->name : null;
|
|
}
|
|
|
|
/**
|
|
* Get the term description to use as a replacement.
|
|
*
|
|
* @return string|null
|
|
*/
|
|
public function get_term_description() {
|
|
global $wp_query;
|
|
|
|
if ( is_category() || is_tag() || is_tax() ) {
|
|
return $wp_query->queried_object->description;
|
|
}
|
|
|
|
if ( ! isset( $this->args->term_id ) || empty( $this->args->taxonomy ) ) {
|
|
return null;
|
|
}
|
|
|
|
$term_desc = get_term_field( 'description', $this->args->term_id, $this->args->taxonomy );
|
|
return '' !== $term_desc ? Str::truncate( $term_desc, 160 ) : null;
|
|
}
|
|
|
|
/**
|
|
* Get a custom taxonomy term to use as a replacement.
|
|
*
|
|
* @param string $taxonomy The name of the taxonomy.
|
|
*
|
|
* @return string|null
|
|
*/
|
|
public function get_custom_term( $taxonomy ) {
|
|
return Str::is_non_empty( $taxonomy ) ? $this->get_terms( $this->args->ID, $taxonomy, true, [], 'name' ) : null;
|
|
}
|
|
|
|
/**
|
|
* Get a custom taxonomy term description to use as a replacement.
|
|
*
|
|
* @param string $taxonomy The name of the taxonomy.
|
|
*
|
|
* @return string|null
|
|
*/
|
|
public function get_custom_term_desc( $taxonomy ) {
|
|
return Str::is_non_empty( $taxonomy ) ? $this->get_terms( $this->args->ID, $taxonomy, true, [], 'description' ) : null;
|
|
}
|
|
}
|