127 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php declare(strict_types = 1);
 | |
| /**
 | |
|  * Template conditionals collector.
 | |
|  *
 | |
|  * @package query-monitor
 | |
|  */
 | |
| 
 | |
| if ( ! defined( 'ABSPATH' ) ) {
 | |
| 	exit;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @extends QM_DataCollector<QM_Data_Conditionals>
 | |
|  */
 | |
| class QM_Collector_Conditionals extends QM_DataCollector {
 | |
| 
 | |
| 	public $id = 'conditionals';
 | |
| 
 | |
| 	public function get_storage(): QM_Data {
 | |
| 		return new QM_Data_Conditionals();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function process() {
 | |
| 
 | |
| 		/**
 | |
| 		 * Allows users to filter the names of conditional functions that are exposed by QM.
 | |
| 		 *
 | |
| 		 * @since 2.7.0
 | |
| 		 *
 | |
| 		 * @param array<int, string> $conditionals The list of conditional function names.
 | |
| 		 */
 | |
| 		$conds = apply_filters( 'qm/collect/conditionals', array(
 | |
| 			'is_404',
 | |
| 			'is_admin',
 | |
| 			'is_archive',
 | |
| 			'is_attachment',
 | |
| 			'is_author',
 | |
| 			'is_blog_admin',
 | |
| 			'is_category',
 | |
| 			'is_comment_feed',
 | |
| 			'is_customize_preview',
 | |
| 			'is_date',
 | |
| 			'is_day',
 | |
| 			'is_embed',
 | |
| 			'is_favicon',
 | |
| 			'is_feed',
 | |
| 			'is_front_page',
 | |
| 			'is_home',
 | |
| 			'is_main_network',
 | |
| 			'is_main_site',
 | |
| 			'is_month',
 | |
| 			'is_network_admin',
 | |
| 			'is_page',
 | |
| 			'is_page_template',
 | |
| 			'is_paged',
 | |
| 			'is_post_type_archive',
 | |
| 			'is_preview',
 | |
| 			'is_privacy_policy',
 | |
| 			'is_robots',
 | |
| 			'is_rtl',
 | |
| 			'is_search',
 | |
| 			'is_single',
 | |
| 			'is_singular',
 | |
| 			'is_ssl',
 | |
| 			'is_sticky',
 | |
| 			'is_tag',
 | |
| 			'is_tax',
 | |
| 			'is_time',
 | |
| 			'is_trackback',
 | |
| 			'is_user_admin',
 | |
| 			'is_year',
 | |
| 		) );
 | |
| 
 | |
| 		/**
 | |
| 		 * This filter is deprecated. Please use `qm/collect/conditionals` instead.
 | |
| 		 *
 | |
| 		 * @since 2.7.0
 | |
| 		 *
 | |
| 		 * @param array<int, string> $conditionals The list of conditional function names.
 | |
| 		 */
 | |
| 		$conds = apply_filters( 'query_monitor_conditionals', $conds );
 | |
| 
 | |
| 		$true = array();
 | |
| 		$false = array();
 | |
| 		$na = array();
 | |
| 
 | |
| 		foreach ( $conds as $cond ) {
 | |
| 			if ( function_exists( $cond ) ) {
 | |
| 				$id = null;
 | |
| 				if ( ( 'is_sticky' === $cond ) && ! get_post( $id ) ) {
 | |
| 					# Special case for is_sticky to prevent PHP notices
 | |
| 					$false[] = $cond;
 | |
| 				} elseif ( ! is_multisite() && in_array( $cond, array( 'is_main_network', 'is_main_site' ), true ) ) {
 | |
| 					# Special case for multisite conditionals to prevent them from being annoying on single site installations
 | |
| 					$na[] = $cond;
 | |
| 				} else {
 | |
| 					if ( call_user_func( $cond ) ) {
 | |
| 						$true[] = $cond;
 | |
| 					} else {
 | |
| 						$false[] = $cond;
 | |
| 					}
 | |
| 				}
 | |
| 			} else {
 | |
| 				$na[] = $cond;
 | |
| 			}
 | |
| 		}
 | |
| 		$this->data->conds = compact( 'true', 'false', 'na' );
 | |
| 
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @param array<string, QM_Collector> $collectors
 | |
|  * @param QueryMonitor $qm
 | |
|  * @return array<string, QM_Collector>
 | |
|  */
 | |
| function register_qm_collector_conditionals( array $collectors, QueryMonitor $qm ) {
 | |
| 	$collectors['conditionals'] = new QM_Collector_Conditionals();
 | |
| 	return $collectors;
 | |
| }
 | |
| 
 | |
| add_filter( 'qm/collectors', 'register_qm_collector_conditionals', 10, 2 );
 |