HEX
Server: Apache/2.4.59 (Debian)
System: Linux skycube.cz 4.19.0-25-amd64 #1 SMP Debian 4.19.289-2 (2023-08-08) x86_64
User: ilya (534)
PHP: 7.3.31-1~deb10u7
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: /var/www/ilya/data/www/rudomilov.ru/wp-content/plugins/jetpack/modules/canonical-urls.php
<?php
/**
 * Module Name: Canonical URLs
 * Module Description: Add canonical URL tags to archive pages to prevent duplicate content in search engines.
 * Sort Order: 36
 * First Introduced: 15.6
 * Requires Connection: No
 * Requires User Connection: No
 * Auto Activate: No
 * Module Tags: Traffic
 * Feature: Traffic
 * Additional Search Queries: canonical, seo, duplicate content, woocommerce, archive
 *
 * @package automattic/jetpack
 */

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

// Disable canonical URL output when a conflicting SEO plugin is active.
add_filter( 'jetpack_disable_canonical_urls', 'jetpack_canonical_urls_check_conflicts' );

/**
 * Can be used to prevent the Canonical URLs module from outputting canonical tags.
 *
 * @module canonical-urls
 *
 * @since 15.6
 *
 * @param bool $disabled Whether canonical URL output is disabled. Defaults to false.
 */
if ( ! apply_filters( 'jetpack_disable_canonical_urls', false ) ) {
	require_once __DIR__ . '/canonical-urls/class-jetpack-canonical-urls-resolver.php';
	add_action( 'wp_head', 'jetpack_canonical_urls_output_tag' );
}

/**
 * Check if a conflicting SEO plugin is active and disable canonical URL output.
 *
 * @since 15.6
 *
 * @param bool $disabled Whether canonical URL output is already disabled.
 * @return bool Whether canonical URL output should be disabled.
 */
function jetpack_canonical_urls_check_conflicts( $disabled ) {
	if ( $disabled ) {
		return $disabled;
	}

	$conflicting_plugins = array(
		'wordpress-seo/wp-seo.php',
		'wordpress-seo-premium/wp-seo-premium.php',
		'all-in-one-seo-pack/all_in_one_seo_pack.php',
		'all-in-one-seo-pack-pro/all_in_one_seo_pack.php',
		'seo-by-rank-math/rank-math.php',
		'autodescription/autodescription.php',
		'slim-seo/slim-seo.php',
		'wp-seopress/seopress.php',
		'wp-seopress-pro/seopress-pro.php',
		'seo-key/seo-key.php',
		'seo-key-pro/seo-key.php',
	);

	foreach ( $conflicting_plugins as $plugin ) {
		if ( Jetpack::is_plugin_active( $plugin ) ) {
			return true;
		}
	}

	return $disabled;
}

/**
 * Output the canonical link tag for non-singular pages.
 *
 * WordPress core handles singular posts/pages via rel_canonical(),
 * so this function only outputs canonical tags for archive pages.
 *
 * @since 15.6
 */
function jetpack_canonical_urls_output_tag() {
	if ( is_singular() ) {
		return;
	}

	$url = Jetpack_Canonical_Urls_Resolver::get_canonical_url();

	if ( ! empty( $url ) ) {
		echo '<link rel="canonical" href="' . esc_url( $url ) . '" />' . "\n";
	}
}