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.
184 lines
4.0 KiB
PHTML
184 lines
4.0 KiB
PHTML
7 months ago
|
<?php
|
||
|
/**
|
||
|
* The metabox functionality of the plugin.
|
||
|
*
|
||
|
* @since 1.0.25
|
||
|
* @package RankMath
|
||
|
* @subpackage RankMath\Admin\Metabox
|
||
|
* @author Rank Math <support@rankmath.com>
|
||
|
*/
|
||
|
|
||
|
namespace RankMath\Admin\Metabox;
|
||
|
|
||
|
use RankMath\Helper;
|
||
|
use RankMath\Traits\Hooker;
|
||
|
use RankMath\Helpers\Param;
|
||
|
|
||
|
defined( 'ABSPATH' ) || exit;
|
||
|
|
||
|
/**
|
||
|
* Taxonomy metabox class.
|
||
|
*/
|
||
|
class Taxonomy_Screen implements IScreen {
|
||
|
|
||
|
use Hooker;
|
||
|
|
||
|
/**
|
||
|
* Class construct
|
||
|
*/
|
||
|
public function __construct() {
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get object ID.
|
||
|
*
|
||
|
* @return int
|
||
|
*/
|
||
|
public function get_object_id() {
|
||
|
return Param::request( 'tag_ID', 0, FILTER_VALIDATE_INT );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get object type
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function get_object_type() {
|
||
|
return 'term';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get object types to register metabox to
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function get_object_types() {
|
||
|
$object_types = [];
|
||
|
$taxonomies = Helper::get_allowed_taxonomies();
|
||
|
|
||
|
if ( is_array( $taxonomies ) && ! empty( $taxonomies ) ) {
|
||
|
$object_types[] = 'term';
|
||
|
$this->description_field_editor();
|
||
|
remove_filter( 'pre_term_description', 'wp_filter_kses' );
|
||
|
remove_filter( 'term_description', 'wp_kses_data' );
|
||
|
add_filter( 'pre_term_description', 'wp_kses_post' );
|
||
|
add_filter( 'term_description', 'wp_kses_post' );
|
||
|
}
|
||
|
|
||
|
return $object_types;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Enqueue Styles and Scripts required for screen.
|
||
|
*/
|
||
|
public function enqueue() {}
|
||
|
|
||
|
/**
|
||
|
* Get analysis to run.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function get_analysis() {
|
||
|
return [
|
||
|
'keywordInTitle' => true,
|
||
|
'keywordInMetaDescription' => true,
|
||
|
'keywordInPermalink' => true,
|
||
|
'keywordNotUsed' => true,
|
||
|
'titleStartWithKeyword' => true,
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get values for localize.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function get_values() {
|
||
|
$url = '';
|
||
|
if ( $this->get_object_id() ) {
|
||
|
$url = get_term_link( $this->get_object_id() );
|
||
|
$data = array_filter( explode( '/', $url ) );
|
||
|
$url = ! empty( $data ) ? str_replace( array_pop( $data ), '%term%', $url ) : '';
|
||
|
}
|
||
|
|
||
|
return [
|
||
|
'permalinkFormat' => $url ? $url : home_url(),
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get object values for localize
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function get_object_values() {
|
||
|
$taxonomy = $this->get_taxonomy();
|
||
|
return [
|
||
|
'titleTemplate' => Helper::get_settings( "titles.tax_{$taxonomy}_title", '%term% %sep% %sitename%' ),
|
||
|
'descriptionTemplate' => Helper::get_settings( "titles.tax_{$taxonomy}_description", '%term_description%' ),
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Output the WordPress editor.
|
||
|
*
|
||
|
* @param object $term Current taxonomy term object.
|
||
|
*/
|
||
|
public function category_description_editor( $term ) {
|
||
|
?>
|
||
|
<tr class="form-field term-description-wrap rank-math-term-description-wrap">
|
||
|
<th scope="row"><label for="description"><?php esc_html_e( 'Description', 'rank-math' ); ?></label></th>
|
||
|
<td>
|
||
|
<?php
|
||
|
wp_editor(
|
||
|
html_entity_decode( $term->description, ENT_QUOTES, 'UTF-8' ),
|
||
|
'rank_math_description_editor',
|
||
|
[
|
||
|
'textarea_name' => 'description',
|
||
|
'textarea_rows' => 5,
|
||
|
]
|
||
|
);
|
||
|
?>
|
||
|
</td>
|
||
|
<script>
|
||
|
// Remove the non-html field
|
||
|
jQuery('textarea#description').closest('.form-field').remove();
|
||
|
</script>
|
||
|
</tr>
|
||
|
<?php
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Add the description field to the edit taxonomy screen if the metabox is
|
||
|
* enabled for the current taxonomy.
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
private function description_field_editor() {
|
||
|
$taxonomy = $this->get_taxonomy();
|
||
|
if (
|
||
|
! Helper::get_settings( 'titles.tax_' . $taxonomy . '_add_meta_box' ) ||
|
||
|
$this->do_filter( 'admin/disable_rich_editor', false, $taxonomy )
|
||
|
) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$this->action( "{$taxonomy}_edit_form_fields", 'category_description_editor', 1 );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get current taxonomy.
|
||
|
*
|
||
|
* @return {string} Taxonomy slug.
|
||
|
*/
|
||
|
private function get_taxonomy() {
|
||
|
$taxonomy = filter_input( INPUT_GET, 'taxonomy', FILTER_DEFAULT, [ 'options' => [ 'default' => '' ] ] );
|
||
|
$taxonomy_object = get_taxonomy( $taxonomy );
|
||
|
if ( empty( $taxonomy_object ) || empty( $taxonomy_object->public ) ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
return $taxonomy;
|
||
|
}
|
||
|
}
|