Astra_Target_Rules_Fields::get_location_selections( bool $consider_type = false )

Get location selection options.


Description


Parameters

$consider_type

(bool) (Optional) Consider type for dealing with ruleset options.

Default value: false


Return

(array)


Source

File: classes/modules/target-rule/class-astra-target-rules-fields.php

		public static function get_location_selections() {

			$args = array(
				'public'   => true,
				'_builtin' => true,
			);

			$post_types = get_post_types( $args, 'objects' );
			unset( $post_types['attachment'] );

			$args['_builtin'] = false;
			$custom_post_type = get_post_types( $args, 'objects' );

			$post_types = apply_filters( 'astra_location_rule_post_types', array_merge( $post_types, $custom_post_type ) );

			$special_pages = array(
				'special-404'    => __( '404 Page', 'astra-addon' ),
				'special-search' => __( 'Search Page', 'astra-addon' ),
				'special-blog'   => __( 'Blog / Posts Page', 'astra-addon' ),
				'special-front'  => __( 'Front Page', 'astra-addon' ),
				'special-date'   => __( 'Date Archive', 'astra-addon' ),
				'special-author' => __( 'Author Archive', 'astra-addon' ),
			);

			if ( class_exists( 'WooCommerce' ) ) {
				$special_pages['special-woo-shop'] = __( 'WooCommerce Shop Page', 'astra-addon' );
			}

			$selection_options = array(
				'basic'         => array(
					'label' => __( 'Basic', 'astra-addon' ),
					'value' => array(
						'basic-global'    => __( 'Entire Website', 'astra-addon' ),
						'basic-singulars' => __( 'All Singulars', 'astra-addon' ),
						'basic-archives'  => __( 'All Archives', 'astra-addon' ),
					),
				),

				'special-pages' => array(
					'label' => __( 'Special Pages', 'astra-addon' ),
					'value' => $special_pages,
				),
			);

			$args = array(
				'public' => true,
			);

			$taxonomies = get_taxonomies( $args, 'objects' );

			if ( ! empty( $taxonomies ) ) {
				foreach ( $taxonomies as $taxonomy ) {

					// skip post format taxonomy.
					if ( 'post_format' == $taxonomy->name ) {
						continue;
					}

					foreach ( $post_types as $post_type ) {

						$post_opt = self::get_post_target_rule_options( $post_type, $taxonomy );

						if ( isset( $selection_options[ $post_opt['post_key'] ] ) ) {

							if ( ! empty( $post_opt['value'] ) && is_array( $post_opt['value'] ) ) {

								foreach ( $post_opt['value'] as $key => $value ) {

									if ( ! in_array( $value, $selection_options[ $post_opt['post_key'] ]['value'] ) ) {
										$selection_options[ $post_opt['post_key'] ]['value'][ $key ] = $value;
									}
								}
							}
						} else {
							$selection_options[ $post_opt['post_key'] ] = array(
								'label' => $post_opt['label'],
								'value' => $post_opt['value'],
							);
						}
					}
				}
			}

			$selection_options['specific-target'] = array(
				'label' => __( 'Specific Target', 'astra-addon' ),
				'value' => array(
					'specifics' => __( 'Specific Pages / Posts / Taxonomies, etc.', 'astra-addon' ),
				),
			);

			/**
			 * Filter options displayed in the display conditions select field of Display conditions.
			 *
			 * @since 1.5.0
			 */
			return apply_filters( 'astra_display_on_list', $selection_options );
		}


User Contributed Notes

You must log in before being able to contribute a note or feedback.