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.

115 lines
4.0 KiB
PHTML

<?php
/**
* The Pro Module loader
*
* @since 1.0.0
* @package RankMath
* @subpackage RankMathPro
* @author MyThemeShop <admin@mythemeshop.com>
*/
namespace RankMathPro;
use RankMath\Helper;
use RankMath\Traits\Hooker;
use MyThemeShop\Helpers\Conditional;
use MyThemeShop\Helpers\Param;
defined( 'ABSPATH' ) || exit;
/**
* Modules class.
*/
class Modules {
use Hooker;
/**
* The Constructor.
*/
public function __construct() {
if ( Conditional::is_heartbeat() ) {
return;
}
$this->filter( 'rank_math/modules', 'setup_core', 1 );
$this->action( 'admin_enqueue_scripts', 'enqueue' );
$this->action( 'rank_math/module_changed', 'flush_rewrite_rules', 10, 2 );
}
/**
* Setup core modules.
*
* @param array $modules Array of modules.
*
* @return array
*/
public function setup_core( $modules ) {
$active_modules = get_option( 'rank_math_modules', [] );
$modules['news-sitemap'] = [
'title' => esc_html__( 'News Sitemap', 'rank-math-pro' ),
'desc' => esc_html__( 'Create a News Sitemap for your news-related content. You only need a News sitemap if you plan on posting news-related content on your website.', 'rank-math-pro' ),
'class' => 'RankMathPro\Sitemap\News_Sitemap',
'icon' => 'post',
'settings' => Helper::get_admin_url( 'options-sitemap' ) . '#setting-panel-news-sitemap',
'probadge' => defined( 'RANK_MATH_PRO_FILE' ),
'disabled' => ( ! in_array( 'sitemap', $active_modules, true ) ),
'dep_modules' => [ 'sitemap' ],
'disabled_text' => esc_html__( 'Please activate Sitemap module to use this module.', 'rank-math-pro' ),
];
$modules['video-sitemap'] = [
'title' => esc_html__( 'Video Sitemap', 'rank-math-pro' ),
'desc' => esc_html__( 'For your video content, a Video Sitemap is a recommended step for better rankings and inclusion in the Video search.', 'rank-math-pro' ),
'class' => 'RankMathPro\Sitemap\Video_Sitemap',
'icon' => 'video',
'settings' => Helper::get_admin_url( 'options-sitemap' ) . '#setting-panel-video-sitemap',
'probadge' => defined( 'RANK_MATH_PRO_FILE' ),
'disabled' => ( ! in_array( 'rich-snippet', $active_modules, true ) || ! in_array( 'sitemap', $active_modules, true ) ),
'dep_modules' => [ 'sitemap', 'rich-snippet' ],
'disabled_text' => esc_html__( 'Please activate Schema & Sitemap module to use this module.', 'rank-math-pro' ),
];
$modules['podcast'] = [
'title' => esc_html__( 'Podcast', 'rank-math-pro' ),
'desc' => esc_html__( 'Make your podcasts discoverable via Google Podcasts, Apple Podcasts, and similar services with Podcast RSS feed and Schema Markup generated by Rank Math.', 'rank-math-pro' ),
'class' => 'RankMathPro\Podcast\Podcast',
'icon' => 'podcast',
'betabadge' => true,
'settings' => Helper::get_admin_url( 'options-general' ) . '#setting-panel-podcast',
'probadge' => defined( 'RANK_MATH_PRO_FILE' ),
'disabled' => ! in_array( 'rich-snippet', $active_modules, true ),
'dep_modules' => [ 'rich-snippet' ],
'disabled_text' => esc_html__( 'Please activate Schema module to use this module.', 'rank-math-pro' ),
];
// Replace Schema Loader.
$modules['rich-snippet']['class'] = '\RankMathPro\Schema\Schema';
return $modules;
}
/**
* Enqueue styles and scripts.
*/
public function enqueue() {
if ( 'rank-math' !== Param::get( 'page' ) ) {
return;
}
wp_enqueue_script( 'rank-math-pro-dashboard', RANK_MATH_PRO_URL . 'assets/admin/js/dashboard.js', [ 'jquery' ], rank_math_pro()->version, true );
}
/**
* Function to run when Module is enabled/disabled.
*
* @param string $module Module.
* @param string $state Module state.
*/
public function flush_rewrite_rules( $module, $state ) {
if ( 'podcast' === $module ) {
Helper::schedule_flush_rewrite();
}
}
}