Пример #1
0
 /**
  * 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;
 }
Пример #2
0
/**
 * 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;
}
Пример #3
0
/**
 * 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;
}