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 );
 |