'Yoast SEO',
'author' => 'W3 EDGE',
'description' => __( 'Configures W3 Total Cache to comply with Yoast SEO requirements automatically.', 'w3-total-cache' ),
'author_uri' => 'https://www.w3-edge.com/',
'extension_uri' => 'https://www.w3-edge.com/',
'extension_id' => 'wordpress-seo',
'settings_exists' => true,
'version' => '0.1',
'enabled' => self::criteria_match(),
'requirements' => implode( ', ', $message ),
'path' => 'w3-total-cache/Extension_WordPressSeo_Plugin.php',
);
return $extensions;
}
/**
* Adds hooks related to the WordPress SEO extension.
*
* @param array $hooks Array of existing hooks.
*
* @return array Modified array of hooks.
*/
public static function w3tc_extensions_hooks( $hooks ) {
if ( ! self::show_notice() ) {
return $hooks;
}
if ( ! isset( $hooks['filters']['w3tc_notes'] ) ) {
$hooks['filters']['w3tc_notes'] = array();
}
$hooks['filters']['w3tc_notes'][] = 'w3tc_notes_wordpress_seo';
return $hooks;
}
/**
* Determines whether a notice should be shown for the WordPress SEO extension.
*
* @return bool True if the notice should be shown, false otherwise.
*/
private static function show_notice() {
$config = Dispatcher::config();
if ( $config->is_extension_active( 'wordpress-seo' ) ) {
return false;
}
if ( ! self::criteria_match() ) {
return false;
}
$state = Dispatcher::config_state();
if ( $state->get_boolean( 'wordpress_seo.hide_note_suggest_activation' ) ) {
return false;
}
return true;
}
/**
* Adds a note about activating the WordPress SEO extension for W3 Total Cache.
*
* @param array $notes Array of current notes.
*
* @return array Modified array of notes.
*/
public static function w3tc_notes_wordpress_seo( $notes ) {
if ( ! self::show_notice() ) {
return $notes;
}
$extension_id = 'wordpress-seo';
$notes[ $extension_id ] = sprintf(
// Translators: 1 opening HTML link to extensions page, 2 closing HTML link
// Translators: 3 opening HTML link to activate extensionlink, 4 button link.
__(
'Activating the %1$sYoast SEO%2$s extension for W3 Total Cache may be helpful for your site. %3$sClick here%2$s to try it. %4$s',
'w3-total-cache'
),
'',
'',
'',
Util_Ui::button_link(
__( 'Hide this message', 'w3-total-cache' ),
Util_Ui::url(
array(
'w3tc_default_config_state' => 'y',
'key' => 'wordpress_seo.hide_note_suggest_activation',
'value' => 'true',
)
)
)
);
return $notes;
}
/**
* Checks whether the required criteria for WordPress SEO are met.
*
* @return bool True if criteria are met, false otherwise.
*/
private static function criteria_match() {
return defined( 'WPSEO_VERSION' );
}
/**
* Activates the WordPress SEO extension for W3 Total Cache.
*
* @return void
*
* @throws \Exception If there is an issue during activation.
*/
public function activate() {
try {
$config = Dispatcher::config();
$config->set( 'pgcache.prime.enabled', true );
$config->set( 'pgcache.prime.sitemap', '/sitemap_index.xml' );
$config->save();
} catch ( \Exception $ex ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch
}
}
/**
* Deactivates the WordPress SEO extension for W3 Total Cache.
*
* @return void
*
* @throws \Exception If there is an issue during deactivation.
*/
public function deactivate() {
try {
$config = Dispatcher::config();
$config->set( 'pgcache.prime.enabled', false );
$config->save();
} catch ( \Exception $ex ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch
}
}
}