/** * Get real query arguments without Papi Query specific arguments. * * @return array */ public function get_query_args() { $args = $this->args; if (empty($args['meta_query'])) { // Add new meta key/value if `meta_key` or `meta_value` is empty. if (empty($args['meta_key']) || empty($args['meta_value'])) { $args['meta_key'] = papi_get_page_type_key(); $args['meta_value'] = $args['entry_type']; } else { if (papi_entry_type_exists($args['entry_type'])) { $item = ['key' => $args['meta_key'], 'value' => $args['meta_value']]; // Add `meta_compare` if set. if (isset($args['meta_compare'])) { $item['compare'] = $args['meta_compare']; unset($args['meta_compare']); } // Add new meta query item. $args['meta_query'][] = $item; // Add Papi entry/page type meta query. $args['meta_query'][] = ['key' => papi_get_page_type_key(), 'value' => $args['entry_type']]; // Add meta query relation when two query items. if (isset($args['relation'])) { $args['meta_query']['relation'] = $args['relation']; } else { $args['meta_query']['relation'] = 'AND'; } unset($args['meta_key']); unset($args['meta_value']); } } } else { if (papi_entry_type_exists($args['entry_type'])) { // Add Papi entry/page type meta query. $args['meta_query'][] = ['key' => papi_get_page_type_key(), 'value' => $args['entry_type']]; // Add meta query relation if not set. if (!isset($args['meta_query']['relation'])) { $args['meta_query']['relation'] = 'AND'; } } } // Since the real query classes don't support // custom arguments the should be deleted. foreach (array_keys($this->default_args) as $key) { if (isset($args[$key])) { unset($args[$key]); } } return $args; }
/** * Set taxonomy type to a term. * * @param mixed $term_id * @param string $taxonomy_type * * @return bool */ function papi_set_taxonomy_type_id($term_id, $taxonomy_type) { if (papi_entry_type_exists($taxonomy_type)) { return update_term_meta(papi_get_term_id($term_id), papi_get_page_type_key(), $taxonomy_type); } return false; }
/** * Set page type to a post. * * @param mixed $post_id * @param string $page_type * * @return bool */ function papi_set_page_type_id($post_id, $page_type) { if (papi_entry_type_exists($page_type)) { return update_post_meta(papi_get_post_id($post_id), papi_get_page_type_key(), $page_type); } return false; }