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