<?php if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly if( ! class_exists('ACF_Location') ) : class ACF_Location { /** @var string The location rule name. */ public $name = ''; /** @var string The location rule label. */ public $label = ''; /** @var string The location rule category. */ public $category = 'post'; /** @var string The location rule visibility. */ public $public = true; /** * __construct * * Sets up the class functionality. * * @date 5/03/2014 * @since 5.0.0 * * @param void * @return void */ function __construct() { // Call initialize to setup props. $this->initialize(); // Add filters. $this->add_filter( 'acf/location/rule_match/' . $this->name, array($this, 'rule_match'), 5, 3 ); $this->add_filter( 'acf/location/rule_operators/' . $this->name, array($this, 'rule_operators'), 5, 2 ); $this->add_filter( 'acf/location/rule_values/' . $this->name, array($this, 'rule_values'), 5, 2 ); } /** * add_filter * * Maybe adds a filter callback. * * @date 17/9/19 * @since 5.8.1 * * @param string $tag The filter name. * @param callable $function_to_add The callback function. * @param int $priority The filter priority. * @param int $accepted_args The number of args to accept. * @return void */ function add_filter( $tag = '', $function_to_add = '', $priority = 10, $accepted_args = 1 ) { if( is_callable($function_to_add) ) { add_filter( $tag, $function_to_add, $priority, $accepted_args ); } } /** * initialize * * Sets up the class functionality. * * @date 5/03/2014 * @since 5.0.0 * * @param void * @return void */ function initialize() { // Do nothing. } /** * compare * * Compares the given value and rule params returning true when they match. * * @date 17/9/19 * @since 5.8.1 * * @param mixed $value The value to compare against. * @param array $rule The locatio rule data. * @return bool */ function compare( $value, $rule ) { // Allow "all" to match any value. if( $rule['value'] === 'all' ) { $match = true; // Compare all other values. } else { $match = ( $value == $rule['value'] ); } // Allow for "!=" operator. if( $rule['operator'] == '!=' ) { $match = !$match; } // Return. return $match; } } endif; // class_exists check