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.
119 lines
2.8 KiB
PHTML
119 lines
2.8 KiB
PHTML
8 months ago
|
<?php
|
||
|
/**
|
||
|
* The News Sitemap Metabox.
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @package RankMath
|
||
|
* @subpackage RankMathPro
|
||
|
* @author MyThemeShop <admin@mythemeshop.com>
|
||
|
*/
|
||
|
|
||
|
namespace RankMathPro\Sitemap;
|
||
|
|
||
|
use RankMath\Helper;
|
||
|
use RankMath\Traits\Hooker;
|
||
|
use RankMath\Admin\Admin_Helper;
|
||
|
use RankMath\Sitemap\Cache_Watcher;
|
||
|
use MyThemeShop\Helpers\Param;
|
||
|
use MyThemeShop\Helpers\WordPress;
|
||
|
|
||
|
defined( 'ABSPATH' ) || exit;
|
||
|
|
||
|
/**
|
||
|
* News_Metabox class.
|
||
|
*/
|
||
|
class News_Metabox {
|
||
|
|
||
|
use Hooker;
|
||
|
|
||
|
/**
|
||
|
* The Constructor.
|
||
|
*/
|
||
|
public function __construct() {
|
||
|
if ( ! Helper::has_cap( 'sitemap' ) ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$this->action( 'save_post', 'save_post' );
|
||
|
$this->action( 'rank_math/admin/editor_scripts', 'enqueue_news_sitemap', 11 );
|
||
|
$this->filter( 'rank_math/metabox/post/values', 'add_metadata', 10, 2 );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Enqueue scripts for the metabox.
|
||
|
*/
|
||
|
public function enqueue_news_sitemap() {
|
||
|
if ( ! $this->can_add_tab() ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
wp_enqueue_script(
|
||
|
'rank-math-pro-news',
|
||
|
RANK_MATH_PRO_URL . 'includes/modules/news-sitemap/assets/js/news-sitemap.js',
|
||
|
[ 'rank-math-pro-editor' ],
|
||
|
rank_math_pro()->version,
|
||
|
true
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Add meta data to use in gutenberg.
|
||
|
*
|
||
|
* @param array $values Aray of tabs.
|
||
|
* @param Screen $screen Sceen object.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function add_metadata( $values, $screen ) {
|
||
|
$object_id = $screen->get_object_id();
|
||
|
$object_type = $screen->get_object_type();
|
||
|
$robots = $screen->get_meta( $object_type, $object_id, 'rank_math_news_sitemap_robots' );
|
||
|
|
||
|
$values['newsSitemap'] = [
|
||
|
'robots' => $robots ? $robots : 'index',
|
||
|
];
|
||
|
|
||
|
return $values;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Check for relevant post type before invalidation.
|
||
|
*
|
||
|
* @copyright Copyright (C) 2008-2019, Yoast BV
|
||
|
* The following code is a derivative work of the code from the Yoast(https://github.com/Yoast/wordpress-seo/), which is licensed under GPL v3.
|
||
|
*
|
||
|
* @param int $post_id Post ID to possibly invalidate for.
|
||
|
*/
|
||
|
public function save_post( $post_id ) {
|
||
|
if (
|
||
|
wp_is_post_revision( $post_id ) ||
|
||
|
! $this->can_add_tab( get_post_type( $post_id ) ) ||
|
||
|
false === Helper::is_post_indexable( $post_id )
|
||
|
) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
Cache_Watcher::invalidate( 'news' );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Show field check callback.
|
||
|
*
|
||
|
* @param string $post_type Current Post Type.
|
||
|
*
|
||
|
* @return boolean
|
||
|
*/
|
||
|
private function can_add_tab( $post_type = false ) {
|
||
|
if ( Admin_Helper::is_term_profile_page() || Admin_Helper::is_posts_page() ) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$post_type = $post_type ? $post_type : WordPress::get_post_type();
|
||
|
return in_array(
|
||
|
$post_type,
|
||
|
(array) Helper::get_settings( 'sitemap.news_sitemap_post_type' ),
|
||
|
true
|
||
|
);
|
||
|
}
|
||
|
}
|