<?php /** * Yoast SEO Plugin. * * @package visual-portfolio */ if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Class Visual_Portfolio_3rd_Yoast */ class Visual_Portfolio_3rd_Yoast { /** * Visual_Portfolio_3rd_Yoast constructor. */ public function __construct() { // Fixed canonical links. add_filter( 'wpseo_canonical', array( 'Visual_Portfolio_Archive_Mapping', 'get_canonical' ), 12, 1 ); add_filter( 'wpseo_opengraph_url', array( 'Visual_Portfolio_Archive_Mapping', 'get_canonical' ), 12, 1 ); add_filter( 'wpseo_schema_webpage', array( $this, 'graph_schema_webpage' ), 12, 1 ); add_filter( 'wpseo_schema_breadcrumb', array( $this, 'graph_schema_breadcrumb' ), 12, 1 ); add_filter( 'wpseo_opengraph_title', array( $this, 'graph_title' ), 12, 1 ); } /** * Allows changing webpage graph piece output. * * @param array $webpage_graph_piece - The webpage graph piece to filter. * @return array */ public function graph_schema_webpage( $webpage_graph_piece ) { $webpage_graph_piece['@id'] = Visual_Portfolio_Archive_Mapping::get_canonical( $webpage_graph_piece['@id'] ); $webpage_graph_piece['url'] = Visual_Portfolio_Archive_Mapping::get_canonical( $webpage_graph_piece['url'] ); $webpage_graph_piece['breadcrumb']['@id'] = Visual_Portfolio_Archive_Mapping::get_canonical_anchor( $webpage_graph_piece['breadcrumb']['@id'] ); $webpage_graph_piece['name'] = Visual_Portfolio_Archive_Mapping::get_current_term_title() ?? $webpage_graph_piece['name']; if ( ! empty( $webpage_graph_piece['potentialAction'] ) ) { foreach ( $webpage_graph_piece['potentialAction'] as $key => $potential_action ) { if ( isset( $potential_action['target'] ) && ! is_array( $potential_action['target'] ) && isset( $potential_action['@type'] ) && 'ReadAction' === $potential_action['@type'] ) { $webpage_graph_piece['potentialAction'][ $key ]['target'] = Visual_Portfolio_Archive_Mapping::get_canonical( $potential_action['target'] ); } } } return $webpage_graph_piece; } /** * Allows changing breadcrumb graph piece output. * * @param array $breadcrumb_graph_piece - The breadcrumb graph piece to filter. * @return array */ public function graph_schema_breadcrumb( $breadcrumb_graph_piece ) { $breadcrumb_graph_piece['@id'] = Visual_Portfolio_Archive_Mapping::get_canonical_anchor( $breadcrumb_graph_piece['@id'] ); return $breadcrumb_graph_piece; } /** * Allow changing the Yoast SEO generated title. * * @param string $title - Current Graph Title. * @return string */ public function graph_title( $title ) { return Visual_Portfolio_Archive_Mapping::get_current_term_title() ?? $title; } } new Visual_Portfolio_3rd_Yoast();