2024-05-20 15:37:46 +03:00

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();