190 lines
5.5 KiB
PHP
190 lines
5.5 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Plugin Compatibility
|
||
|
*
|
||
|
* Functions for compatibility with other plugins.
|
||
|
*
|
||
|
* @package EDD
|
||
|
* @subpackage Functions/Compatibility
|
||
|
* @copyright Copyright (c) 2018, Easy Digital Downloads, LLC
|
||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
||
|
* @since 1.0
|
||
|
*/
|
||
|
|
||
|
// Exit if accessed directly
|
||
|
defined( 'ABSPATH' ) || exit;
|
||
|
|
||
|
/**
|
||
|
* Disables admin sorting of Post Types Order
|
||
|
*
|
||
|
* When sorting downloads by price, earnings, sales, date, or name,
|
||
|
* we need to remove the posts_orderby that Post Types Order imposes
|
||
|
*
|
||
|
* @since 1.2.2
|
||
|
* @return void
|
||
|
*/
|
||
|
function edd_remove_post_types_order() {
|
||
|
remove_filter( 'posts_orderby', 'CPTOrderPosts' );
|
||
|
}
|
||
|
add_action( 'load-edit.php', 'edd_remove_post_types_order' );
|
||
|
|
||
|
/**
|
||
|
* Disables opengraph tags on the checkout page
|
||
|
*
|
||
|
* There is a bizarre conflict that makes the checkout errors not get displayed
|
||
|
* when the Jetpack opengraph tags are displayed
|
||
|
*
|
||
|
* @since 1.3.3.1
|
||
|
* @return bool
|
||
|
*/
|
||
|
function edd_disable_jetpack_og_on_checkout() {
|
||
|
if ( edd_is_checkout() ) {
|
||
|
remove_action( 'wp_head', 'jetpack_og_tags' );
|
||
|
}
|
||
|
}
|
||
|
add_action( 'template_redirect', 'edd_disable_jetpack_og_on_checkout' );
|
||
|
|
||
|
/**
|
||
|
* Checks if a caching plugin is active
|
||
|
*
|
||
|
* @since 1.4.1
|
||
|
* @return bool $caching True if caching plugin is enabled, false otherwise
|
||
|
*/
|
||
|
function edd_is_caching_plugin_active() {
|
||
|
$caching = ( function_exists( 'wpsupercache_site_admin' ) || defined( 'W3TC' ) || function_exists( 'rocket_init' ) ) || defined( 'WPHB_VERSION' );
|
||
|
return apply_filters( 'edd_is_caching_plugin_active', $caching );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Adds a ?nocache option for the checkout page
|
||
|
*
|
||
|
* This ensures the checkout page remains uncached when plugins like WP Super Cache are activated
|
||
|
*
|
||
|
* @since 1.4.1
|
||
|
* @param array $settings Misc Settings
|
||
|
* @return array $settings Updated Misc Settings
|
||
|
*/
|
||
|
function edd_append_no_cache_param( $settings ) {
|
||
|
if ( ! edd_is_caching_plugin_active() )
|
||
|
return $settings;
|
||
|
|
||
|
$settings[] = array(
|
||
|
'id' => 'no_cache_checkout',
|
||
|
'name' => __('No Caching on Checkout?','easy-digital-downloads' ),
|
||
|
'desc' => __('Check this box in order to append a ?nocache parameter to the checkout URL to prevent caching plugins from caching the page.','easy-digital-downloads' ),
|
||
|
'type' => 'checkbox'
|
||
|
);
|
||
|
|
||
|
return $settings;
|
||
|
}
|
||
|
add_filter( 'edd_settings_misc', 'edd_append_no_cache_param', -1 );
|
||
|
|
||
|
/**
|
||
|
* Show the correct language on the [downloads] shortcode if qTranslate is active
|
||
|
*
|
||
|
* @since 1.7
|
||
|
* @param string $content Download content
|
||
|
* @return string $content Download content
|
||
|
*/
|
||
|
function edd_qtranslate_content( $content ) {
|
||
|
if( defined( 'QT_LANGUAGE' ) )
|
||
|
$content = qtrans_useCurrentLanguageIfNotFoundShowAvailable( $content );
|
||
|
return $content;
|
||
|
}
|
||
|
add_filter( 'edd_downloads_content', 'edd_qtranslate_content' );
|
||
|
add_filter( 'edd_downloads_excerpt', 'edd_qtranslate_content' );
|
||
|
|
||
|
/**
|
||
|
* Prevents qTranslate from redirecting to language-specific URL when downloading purchased files
|
||
|
*
|
||
|
* @since 2.5
|
||
|
* @param string $target Target URL
|
||
|
* @return string|bool $target Target URL. False if redirect is disabled
|
||
|
*/
|
||
|
function edd_qtranslate_prevent_redirect( $target ) {
|
||
|
|
||
|
if( strpos( $target, 'eddfile' ) ) {
|
||
|
$target = false;
|
||
|
global $q_config;
|
||
|
$q_config['url_mode'] = '';
|
||
|
}
|
||
|
|
||
|
return $target;
|
||
|
}
|
||
|
add_filter( 'qtranslate_language_detect_redirect', 'edd_qtranslate_prevent_redirect' );
|
||
|
|
||
|
/**
|
||
|
* Disable the WooCommerce 'Un-force SSL when leaving checkout' option on EDD checkout
|
||
|
* to prevent redirect loops
|
||
|
*
|
||
|
* @since 2.1
|
||
|
* @return void
|
||
|
*/
|
||
|
function edd_disable_woo_ssl_on_checkout() {
|
||
|
if( edd_is_checkout() && edd_is_ssl_enforced() ) {
|
||
|
remove_action( 'template_redirect', array( 'WC_HTTPS', 'unforce_https_template_redirect' ) );
|
||
|
}
|
||
|
}
|
||
|
add_action( 'template_redirect', 'edd_disable_woo_ssl_on_checkout', 9 );
|
||
|
|
||
|
/**
|
||
|
* Disables the mandrill_nl2br filter while sending EDD emails
|
||
|
*
|
||
|
* @since 2.1
|
||
|
* @return void
|
||
|
*/
|
||
|
function edd_disable_mandrill_nl2br() {
|
||
|
add_filter( 'mandrill_nl2br', '__return_false' );
|
||
|
}
|
||
|
add_action( 'edd_email_send_before', 'edd_disable_mandrill_nl2br');
|
||
|
|
||
|
/**
|
||
|
* Prevents the Purchase Confirmation screen from being detected as a 404 error in the 404 Redirected plugin
|
||
|
*
|
||
|
* @since 2.2.3
|
||
|
* @return void
|
||
|
*/
|
||
|
function edd_disable_404_redirected_redirect() {
|
||
|
|
||
|
if( ! defined( 'WBZ404_VERSION' ) ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if( edd_is_success_page() ) {
|
||
|
remove_action( 'template_redirect', 'wbz404_process404', 10 );
|
||
|
}
|
||
|
}
|
||
|
add_action( 'template_redirect', 'edd_disable_404_redirected_redirect', 9 );
|
||
|
|
||
|
/**
|
||
|
* Adds 'edd' to the list of Say What aliases after moving to WordPress.org language packs
|
||
|
*
|
||
|
* @since 2.4.6
|
||
|
* @param array $aliases Say What domain aliases
|
||
|
* @return array Say What domain alises with 'edd' added
|
||
|
*/
|
||
|
function edd_say_what_domain_aliases( $aliases ) {
|
||
|
$aliases['easy-digital-downloads'][] = 'edd';
|
||
|
|
||
|
return $aliases;
|
||
|
}
|
||
|
add_filter( 'say_what_domain_aliases', 'edd_say_what_domain_aliases', 10, 1 );
|
||
|
|
||
|
/**
|
||
|
* Removes the Really Simple SSL mixed content filter during file downloads to avoid
|
||
|
* errors with chunked file delivery
|
||
|
*
|
||
|
* @see https://github.com/rlankhorst/really-simple-ssl/issues/30
|
||
|
* @see https://github.com/easydigitaldownloads/easy-digital-downloads/issues/5802
|
||
|
*
|
||
|
* @since 2.7.10
|
||
|
* @return void
|
||
|
*/
|
||
|
function edd_rsssl_remove_mixed_content_filter() {
|
||
|
if ( class_exists( 'REALLY_SIMPLE_SSL' ) && did_action( 'edd_process_verified_download' ) ) {
|
||
|
remove_action( 'init', array( RSSSL()->rsssl_mixed_content_fixer, 'start_buffer' ) );
|
||
|
remove_action( 'shutdown', array( RSSSL()->rsssl_mixed_content_fixer, 'end_buffer' ) );
|
||
|
}
|
||
|
}
|
||
|
add_action( 'plugins_loaded', 'edd_rsssl_remove_mixed_content_filter', 999 );
|