PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.0
Jetpack – WP Security, Backup, Speed, & Growth v16.0
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 14.3.1 14.4.2 All 500 releases
jetpack / modules / canonical-urls.php
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