• File: class-seo-optimization.php
  • Full Path: /home/matthif/www/wp-content/plugins/visual-portfolio/classes/class-seo-optimization.php
  • Date Modified: 12/12/2023 4:36 AM
  • File size: 2.34 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php
/**
 * Seo Optimization.
 *
 * @package visual-portfolio
 */

if ( ! defined'ABSPATH' ) ) {
    exit;
}

/**
 * Class Visual_Portfolio_SEO_Optimization
 */
class Visual_Portfolio_SEO_Optimization {
    
/**
     * Visual_Portfolio_SEO_Optimization constructor.
     */
    
public function __construct() {
        
add_action'init', array( $this'init' ), );
    }

    
/**
     * Initialize archive.
     *
     * @see __construct
     */
    
public function init() {
        
add_filter'get_canonical_url', array( $this'optimize_canonical_url' ), 10);
        
add_filter'get_shortlink', array( $this'optimize_shortlink' ), 10);
    }

    
/**
     * Optimize canonical URL.
     *
     * @param string $canonical_url - Canonical URL.
     * @param object $post          - Current Post Object.
     * @return string
     */
    
public function optimize_canonical_url$canonical_url$post ) {
        return 
$this->optimize_url$canonical_url$post->ID );
    }

    
/**
     * Optimize shortlink.
     *
     * @param string $shortlink   - Shortlink URL.
     * @param int    $id          - Post ID, or 0 for the current post.
     * @param string $context     - The context for the link. One of 'post' or 'query'.
     * @return string
     */
    
public function optimize_shortlink$shortlink$id$context ) {
        return 
=== $id && 'query' === $context $this->optimize_url$shortlinkget_queried_object_id() ) : $shortlink;
    }

    
/**
     * Optimize url by supported GET variables: vp_page, vp_filter, vp_sort and vp_search.
     *
     * @param string $url     - Not optimized URL.
     * @param int    $post_id - Post ID.
     * @return string
     */
    
public function optimize_url$url$post_id ) {
        if (
            ! 
Visual_Portfolio_Archive_Mapping::is_archive(
                array(
                    
'content_source' => 'post-based',
                    
'posts_source'   => 'current_query',
                ),
                
$post_id
            
) &&
            
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
            
isset( $_GET ) && ! empty( $_GET )
        ) {
            
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
            
foreach ( $_GET as $key => $value ) {
                if ( 
'vp_page' === $key || 'vp_filter' === $key || 'vp_sort' === $key || 'vp_search' === $key ) {
                    
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
                    
$url add_query_argarray_map'sanitize_text_field'wp_unslash( array( $key => $value ) ) ), $url );
                }
            }
        }

        return 
$url;
    }
}
new 
Visual_Portfolio_SEO_Optimization();