PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.2
Jetpack – WP Security, Backup, Speed, & Growth v16.2
16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 All 502 releases
jetpack / modules / canonical-urls.php

canonical-urls.php in Jetpack – WP Security, Backup, Speed, & Growth 16.2, at modules/canonical-urls.php

93 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Module Name: Canonical URLs
4 * Module Description: Add canonical URL tags to archive pages to prevent duplicate content in search engines.
5 * Sort Order: 36
6 * First Introduced: 15.6
7 * Requires Connection: No
8 * Requires User Connection: No
9 * Auto Activate: No
10 * Module Tags: Traffic
11 * Feature: Traffic
12 * Additional Search Queries: canonical, seo, duplicate content, woocommerce, archive
13 *
14 * @package automattic/jetpack
15 */
16
17 if ( ! defined( 'ABSPATH' ) ) {
18 exit( 0 );
19 }
20
21 // Disable canonical URL output when a conflicting SEO plugin is active.
22 add_filter( 'jetpack_disable_canonical_urls', 'jetpack_canonical_urls_check_conflicts' );
23
24 /**
25 * Can be used to prevent the Canonical URLs module from outputting canonical tags.
26 *
27 * @module canonical-urls
28 *
29 * @since 15.6
30 *
31 * @param bool $disabled Whether canonical URL output is disabled. Defaults to false.
32 */
33 if ( ! apply_filters( 'jetpack_disable_canonical_urls', false ) ) {
34 require_once __DIR__ . '/canonical-urls/class-jetpack-canonical-urls-resolver.php';
35 add_action( 'wp_head', 'jetpack_canonical_urls_output_tag' );
36 }
37
38 /**
39 * Check if a conflicting SEO plugin is active and disable canonical URL output.
40 *
41 * @since 15.6
42 *
43 * @param bool $disabled Whether canonical URL output is already disabled.
44 * @return bool Whether canonical URL output should be disabled.
45 */
46 function jetpack_canonical_urls_check_conflicts( $disabled ) {
47 if ( $disabled ) {
48 return $disabled;
49 }
50
51 $conflicting_plugins = array(
52 'wordpress-seo/wp-seo.php',
53 'wordpress-seo-premium/wp-seo-premium.php',
54 'all-in-one-seo-pack/all_in_one_seo_pack.php',
55 'all-in-one-seo-pack-pro/all_in_one_seo_pack.php',
56 'seo-by-rank-math/rank-math.php',
57 'autodescription/autodescription.php',
58 'slim-seo/slim-seo.php',
59 'wp-seopress/seopress.php',
60 'wp-seopress-pro/seopress-pro.php',
61 'seo-key/seo-key.php',
62 'seo-key-pro/seo-key.php',
63 );
64
65 foreach ( $conflicting_plugins as $plugin ) {
66 if ( Jetpack::is_plugin_active( $plugin ) ) {
67 return true;
68 }
69 }
70
71 return $disabled;
72 }
73
74 /**
75 * Output the canonical link tag for non-singular pages.
76 *
77 * WordPress core handles singular posts/pages via rel_canonical(),
78 * so this function only outputs canonical tags for archive pages.
79 *
80 * @since 15.6
81 */
82 function jetpack_canonical_urls_output_tag() {
83 if ( is_singular() ) {
84 return;
85 }
86
87 $url = Jetpack_Canonical_Urls_Resolver::get_canonical_url();
88
89 if ( ! empty( $url ) ) {
90 echo '<link rel="canonical" href="' . esc_url( $url ) . '" />' . "\n";
91 }
92 }
93