d tag, if any. * * @since 6.4.0 * * @var WP_HTML_Token|null */ public $current_token = null; /** * Tree construction insertion mode. * * @since 6.4.0 * * @see https://html.spec.whatwg.org/#insertion-mode * * @var string */ public $insertion_mode = self::INSERTION_MODE_INITIAL; /** * Context node initializing fragment parser, if created as a fragment parser. * * @since 6.4.0 * * @see https://html.spec.whatwg.org/#concept-frag-parse-context * * @var [string, array]|null */ public $context_node = null; /** * The recognized encoding of the input byte stream. * * > The stream of code points that comprises the input to the tokenization * > stage will be initially seen by the user agent as a stream of bytes * > (typically coming over the network or from the local file system). * > The bytes encode the actual characters according to a particular character * > encoding, which the user agent uses to decode the bytes into characters. * * @since 6.7.0 * * @var string|null */ public $encoding = null; /** * The parser's confidence in the input encoding. * * > When the HTML parser is decoding an input byte stream, it uses a character * > encoding and a confidence. The confidence is either tentative, certain, or * > irrelevant. The encoding used, and whether the confidence in that encoding * > is tentative or certain, is used during the parsing to determine whether to * > change the encoding. If no encoding is necessary, e.g. because the parser is * > operating on a Unicode stream and doesn't have to use a character encoding * > at all, then the confidence is irrelevant. * * @since 6.7.0 * * @var string */ public $encoding_confidence = 'tentative'; /** * HEAD element pointer. * * @since 6.7.0 * * @see https://html.spec.whatwg.org/multipage/parsing.html#head-element-pointer * * @var WP_HTML_Token|null */ public $head_element = null; /** * FORM element pointer. * * > points to the last form element that was opened and whose end tag has * > not yet been seen. It is used to make form controls associate with * > forms in the face of dramatically bad markup, for historical reasons. * > It is ignored inside template elements. * * @todo This may be invalidated by a seek operation. * * @see https://html.spec.whatwg.org/#form-element-pointer * * @since 6.7.0 * * @var WP_HTML_Token|null */ public $form_element = null; /** * The frameset-ok flag indicates if a `FRAMESET` element is allowed in the current state. * * > The frameset-ok flag is set to "ok" when the parser is created. It is set to "not ok" after certain tokens are seen. * * @since 6.4.0 * * @see https://html.spec.whatwg.org/#frameset-ok-flag * * @var bool */ public $frameset_ok = true; /** * Constructor - creates a new and empty state value. * * @since 6.4.0 * * @see WP_HTML_Processor */ public function __construct() { $this->stack_of_open_elements = new WP_HTML_Open_Elements(); $this->active_formatting_elements = new WP_HTML_Active_Formatting_Elements(); } } lseif ( $this->is_term_edit ) { $term_id = Param::request( 'tag_ID', 0, FILTER_VALIDATE_INT ); $metas = get_metadata( 'term', $term_id ); } if ( empty( $metas ) ) { return []; } $json = []; foreach ( $metas as $meta_key => $meta_value ) { if ( Str::starts_with( '_', $meta_key ) || Str::starts_with( 'rank_math_', $meta_key ) ) { continue; } $json[ $meta_key ] = $meta_value[0]; } return $json; } /** * Get custom taxonomies. * * @return array */ private function get_custom_taxonomies() { $taxonomies = get_post_taxonomies( $this->args->ID ); if ( empty( $taxonomies ) ) { return []; } $json = []; foreach ( $taxonomies as $taxonomy ) { if ( in_array( $taxonomy, [ 'category', 'post_tag' ], true ) ) { continue; } $name = ucwords( str_replace( [ '_', '-' ], ' ', $taxonomy ) ); /* translators: Taxonomy name. */ $title = sprintf( __( '%s Title', 'rank-math' ), $name ); /* translators: Taxonomy name. */ $desc = sprintf( __( '%s Description', 'rank-math' ), $name ); $this->register_replacement( "term_{$taxonomy}", [ 'name' => $title, 'description' => esc_html__( 'Custom Term title.', 'rank-math' ), 'variable' => "customterm({$taxonomy})", 'example' => $title, ], [ $this, 'get_custom_term' ] ); $this->register_replacement( "term_{$taxonomy}_desc", [ 'name' => $desc, 'description' => esc_html__( 'Custom Term description.', 'rank-math' ), 'variable' => "customterm_desc({$taxonomy})", 'example' => $desc, ], [ $this, 'get_custom_term_desc' ] ); $term = $this->get_custom_term( $taxonomy ); $term_desc = $this->get_custom_term_desc( $taxonomy ); $json[ $taxonomy ] = $term ? $term : $title; $json[ "{$taxonomy}_desc" ] = $term_desc ? $term_desc : $desc; } return $json; } }