Advertisement
Beee

post type helper

Nov 23rd, 2022
736
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.66 KB | None | 0 0
  1. // get posts in php
  2. $blog_posts = Artikel::get_posts( 2, [ IbTaxonomies::CONTENT_TYPE => [ 'blog' ] ] );
  3.  
  4. // function for each post type which calls a helper
  5. /**
  6.  * Class Artikel
  7.  */
  8. class Artikel {
  9.  
  10.     /**
  11.      * Get articles
  12.      *
  13.      * @param $amount
  14.      * @param $taxonomy
  15.      * @param $meta
  16.      * @param $add_to_ignore
  17.      */
  18.     public static function get_posts( $amount = 24, $taxonomy = [], $meta = [], $add_to_ignore = true ) : array {
  19.         return PostsHelper::get_posts( IbPostTypes::ARTICLE, $amount, $taxonomy, $meta, $add_to_ignore );
  20.     }
  21. }
  22.  
  23.  
  24. /**
  25.  * Class PostsHelper
  26.  */
  27. class PostsHelper {
  28.  
  29.     /**
  30.      * Get articles
  31.      *
  32.      * @param $post_type
  33.      * @param $amount
  34.      * @param $taxonomy
  35.      * @param $meta
  36.      * @param $add_to_ignore
  37.      */
  38.     public static function get_posts( $post_type = IbPostTypes::ARTICLE, $amount = 24, $taxonomy = [], $meta = [], $add_to_ignore = true ) : array {
  39.         $exclude    = [];
  40.         $meta_query = [];
  41.         $tax_query  = [];
  42.  
  43.         global $used_post_ids;
  44.         if ( ! empty( $used_post_ids ) ) {
  45.             $exclude = $used_post_ids;
  46.         }
  47.  
  48.         $post_args = array(
  49.             'post_type'      => $post_type,
  50.             'posts_per_page' => $amount,
  51.             'exclude'        => $exclude,
  52.             'fields'         => 'ids',
  53.         );
  54.  
  55.         if ( ! empty( $meta ) ) {
  56.             foreach( $meta as $meta_key => $meta_values ) {
  57.                 if ( empty( $meta_values ) ) {
  58.                     $meta_query[] = [
  59.                         'key'     => $meta_key,
  60.                         'compare' => 'EXISTS',
  61.                     ];
  62.                 } else {
  63.                 }
  64.             }
  65.         }
  66.  
  67.         if ( ! empty( $taxonomy ) ) {
  68.             foreach( $taxonomy as $tax_slug => $terms ) {
  69.                 $tax_query[] = [
  70.                     'taxonomy' => $tax_slug,
  71.                     'field'    => 'slug',
  72.                     'terms'    => $terms,
  73.                 ];
  74.             }
  75.         }
  76.         if ( ! empty( $meta_query ) ) {
  77.             $post_args[ 'meta_query' ] = $meta_query;
  78.         }
  79.         if ( ! empty( $tax_query ) ) {
  80.             $post_args[ 'tax_query' ] = $tax_query;
  81.         }
  82.  
  83.         $posts = get_posts( $post_args );
  84.  
  85.         if ( true == $add_to_ignore && is_array( $posts ) && ! empty( $posts ) ) {
  86.             foreach ( $posts as $post ) {
  87.                 add_id_to_global_ignore( $post );
  88.             }
  89.         }
  90.  
  91.         // @TODO: maybe return IDs only or immediately transients
  92.         if ( ! empty( $posts ) ) {
  93.             return $posts;
  94.         }
  95.  
  96.         return [];
  97.  
  98.     }
  99.  
  100. }
  101.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement