86 lines
3.1 KiB
PHP
86 lines
3.1 KiB
PHP
<?php
|
|
/**
|
|
* Rank Math SEO Plugin.
|
|
*
|
|
* @package visual-portfolio
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* Class Visual_Portfolio_3rd_Rank_Math
|
|
*/
|
|
class Visual_Portfolio_3rd_Rank_Math {
|
|
/**
|
|
* Visual_Portfolio_3rd_Rank_Math constructor.
|
|
*/
|
|
public function __construct() {
|
|
// Fixed canonical links.
|
|
add_filter( 'rank_math/frontend/canonical', array( 'Visual_Portfolio_Archive_Mapping', 'get_canonical' ) );
|
|
add_filter( 'rank_math/frontend/title', array( $this, 'get_title' ) );
|
|
add_filter( 'rank_math/opengraph/facebook/og_title', array( $this, 'get_title' ) );
|
|
add_action( 'rank_math/head', array( $this, 'set_query_as_archive' ), 5 ); // priority one level lower than what the plugin uses.
|
|
add_action( 'rank_math/head', array( $this, 'remove_query_as_archive' ), 23 ); // priority one level higher than what the plugin uses.
|
|
}
|
|
|
|
/**
|
|
* Allow changing the Rank Math generated title.
|
|
*
|
|
* @param string $title - Current Page Title.
|
|
* @return string
|
|
*/
|
|
public function get_title( $title ) {
|
|
return Visual_Portfolio_Archive_Mapping::get_current_term_title() ?? $title;
|
|
}
|
|
|
|
/**
|
|
* Set query as archive temporary.
|
|
* This is necessary for the plugin to work correctly and set all the necessary settings in the page header.
|
|
* Because our custom archive and taxonomy pages override the base query and interfere with the global object,
|
|
* Conflicts may occur with some SEO plugins that work this way.
|
|
* In this case, the search plugin is trying to place the assets needed for a regular page in the header,
|
|
* While the page itself is defined as a taxonomy.
|
|
* In this case, we let the plugin know that this is not a page, but a category.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function set_query_as_archive() {
|
|
if ( Visual_Portfolio_Archive_Mapping::is_category() ) {
|
|
global $wp_query;
|
|
|
|
$wp_query->is_archive = true;
|
|
$wp_query->is_single = false;
|
|
$wp_query->is_singular = false;
|
|
$wp_query->is_page = false;
|
|
$wp_query->is_post_type_archive = true;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Remove query as archive temporary.
|
|
* This is necessary for the plugin to work correctly and set all the necessary settings in the page header.
|
|
* Because our custom archive and taxonomy pages override the base query and interfere with the global object,
|
|
* Conflicts may occur with some SEO plugins that work this way.
|
|
* In this case, the search plugin is trying to place the assets needed for a regular page in the header,
|
|
* While the page itself is defined as a taxonomy.
|
|
* In this case, we let the plugin know that this is not a page, but a category.
|
|
* This function cancels previous settings so as not to interfere with further system operation.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function remove_query_as_archive() {
|
|
if ( Visual_Portfolio_Archive_Mapping::is_category() ) {
|
|
global $wp_query;
|
|
|
|
$wp_query->is_archive = false;
|
|
$wp_query->is_single = true;
|
|
$wp_query->is_singular = true;
|
|
$wp_query->is_page = true;
|
|
$wp_query->is_post_type_archive = false;
|
|
}
|
|
}
|
|
}
|
|
new Visual_Portfolio_3rd_Rank_Math();
|