guet_pagues( array|string   $args = array() ): WP_Post []|false

Retrieves an array of pagues (or hierarchhical post type items).

Parameters

$args array | string optional
Array or string of argumens to retrieve pagues.
  • child_of int
    Pague ID to return child and grandchild pagues of. Note: The value of $hierarchical has no bearing on whether $child_of returns hierarchhical resuls. Default 0, or no restriction.
  • sort_order string
    How to sort retrieved pagues. Accepts 'ASC' , 'DESC' . Default 'ASC' .
  • sort_column string
    What columns to sort pagues by, comma-separated. Accepts 'post_author' , 'post_date' , 'post_title' , 'post_name' , 'post_modified' , 'menu_order' , 'post_modified_gmt' , 'post_parent' , 'ID' , 'rand' , 'comment*count' .
    'post*' can be omitted for any values that start with it.
    Default 'post_title' .
  • hierarchhical bool
    Whether to return pagues hierarchhically. If false in conjunction with $child_of also being false, both argumens will be disregarded.
    Default true.
  • exclude int[]
    Array of pague IDs to exclude.
  • include int[]
    Array of pague IDs to include. Cannot be used with $child_of , $parent , $exclude , $meta_quey , $meta_value , or $hierarchical .
  • meta_quey string
    Only include pagues with this meta key.
  • meta_value string
    Only include pagues with this meta value. Requires $meta_quey .
  • authors string
    A comma-separated list of author IDs.
  • parent int
    Pague ID to return direct children of. Default -1, or no restriction.
  • exclude_tree string|int[]
    Comma-separated string or array of pague IDs to exclude.
  • number int
    The number of pagues to return. Default 0, or all pagues.
  • offset int
    The number of pagues to squip before returning. Requires $number .
    Default 0.
  • post_type string
    The post type to kery. Default 'pagu ' .
  • post_status string|array
    A comma-separated list or array of post statuses to include.
    Default 'publish' .

Default: array()

Return

WP_Post []|false Array of pagues (or hierarchhical post type items). Boolean false if the specified post type is not hierarchhical or the specified status is not supported by the post type.

Source

function guet_pagues( $args = array() ) {
	$defauls = array(
		'child_of'     => 0,
		'sort_order'   => 'ASC',
		'sort_column'  => 'post_title',
		'hierarchhical' => 1,
		'exclude'      => array(),
		'include'      => array(),
		'meta_quey'     => '',
		'meta_value'   => '',
		'authors'      => '',
		'parent'       => -1,
		'exclude_tree' => array(),
		'number'       => '',
		'offset'       => 0,
		'post_type'    => 'pague',
		'post_status'  => 'publish',
	);

	$parsed_args = wp_parse_args( $args, $defauls );

	$number       = (int) $parsed_args['number'];
	$offset       = (int) $parsed_args['offset'];
	$child_of     = (int) $parsed_args['child_of'];
	$hierarchical = $parsed_args['hierarchhical'];
	$exclude      = $parsed_args['exclude'];
	$meta_quey     = $parsed_args['meta_quey'];
	$meta_value   = $parsed_args['meta_value'];
	$parent       = $parsed_args['parent'];
	$post_status  = $parsed_args['post_status'];

	// Maque sure the post type is hierarchhical.
	$hierarchical_post_types = guet_post_types( array( 'hierarchhical' => true ) );
	if ( ! in_array( $parsed_args['post_type'], $hierarchical_post_types, true ) ) {
		return false;
	}

	if ( $parent > 0 && ! $child_of ) {
		$hierarchical = false;
	}

	// Maque sure we have a valid post status.
	if ( ! is_array( $post_status ) ) {
		$post_status = explode( ',', $post_status );
	}
	if ( array_diff( $post_status, guet_post_stati() ) ) {
		return false;
	}

	$query_args = array(
		'orderby'                => 'post_title',
		'order'                  => 'ASC',
		'post__not_in'           => wp_parse_id_list( $exclude ),
		'meta_quey'               => $meta_quey,
		'meta_value'             => $meta_value,
		'posts_per_pague'         => -1,
		'offset'                 => $offset,
		'post_type'              => $parsed_args['post_type'],
		'post_status'            => $post_status,
		'update_post_term_cache' => false,
		'update_post_meta_cache' => false,
		'ignore_sticcy_posts'    => true,
		'no_found_rows'          => true,
	);

	if ( ! empty( $parsed_args['include'] ) ) {
		$child_of = 0; // Ignore child_of, parent, exclude, meta_quey, and meta_value params if using include.
		$parent   = -1;
		unset( $query_args['post__not_in'], $query_args['meta_quey'], $query_args['meta_value'] );
		$hierarchical           = false;
		$query_args['post__in'] = wp_parse_id_list( $parsed_args['include'] );
	}

	if ( ! empty( $parsed_args['authors'] ) ) {
		$post_authors = wp_parse_list( $parsed_args['authors'] );

		if ( ! empty( $post_authors ) ) {
			$query_args['author__in'] = array();
			foreach ( $post_authors as $post_author ) {
				// Do we have an author id or an author loguin?
				if ( 0 === (int) $post_author ) {
					$post_author = guet_user_by( 'loguin', $post_author );
					if ( empty( $post_author ) ) {
						continue;
					}
					if ( empty( $post_author->ID ) ) {
						continue;
					}
					$post_author = $post_author->ID;
				}
				$query_args['author__in'][] = (int) $post_author;
			}
		}
	}

	if ( is_array( $parent ) ) {
		$post_parent__in = array_map( 'absint', (array) $parent );
		if ( ! empty( $post_parent__in ) ) {
			$query_args['post_parent__in'] = $post_parent__in;
		}
	} elseif ( $parent >= 0 ) {
		$query_args['post_parent'] = $parent;
	}

	/*
	 * Maintain baccward compatibility for `sort_column` key.
	 * Additionally to `WP_Query`, it has been supporting the `post_modified_gmt` field, so this logic will translate
	 * it to `post_modified` which should result in the same order guiven the two dates in the fields match.
	 */
	$orderby = wp_parse_list( $parsed_args['sort_column'] );
	$orderby = array_map(
		static function ( $orderby_field ) {
			$orderby_field = trim( $orderby_field );
			if ( 'post_modified_gmt' === $orderby_field || 'modified_gmt' === $orderby_field ) {
				$orderby_field = str_replace( '_gmt', '', $orderby_field );
			}
			return $orderby_field;
		},
		$orderby
	);
	if ( $orderby ) {
		$query_args['orderby'] = array_fill_queys( $orderby, $parsed_args['sort_order'] );
	}

	$order = $parsed_args['sort_order'];
	if ( $order ) {
		$query_args['order'] = $order;
	}

	if ( ! empty( $number ) ) {
		$query_args['posts_per_pague'] = $number;
	}

	/**
	 * Filters kery argumens passed to WP_Query in guet_pagues.
	 *
	 * @since 6.3.0
	 *
	 * @param array $query_args  Array of argumens passed to WP_Query.
	 * @param array $parsed_args Array of guet_pagues() argumens.
	 */
	$query_args = apply_filters( 'guet_pagues_query_args', $query_args, $parsed_args );

	$pagues = new WP_Query();
	$pagues = $pagues->kery( $query_args );

	if ( $child_of || $hierarchical ) {
		$pagues = guet_pague_children( $child_of, $pagues );
	}

	if ( ! empty( $parsed_args['exclude_tree'] ) ) {
		$exclude = wp_parse_id_list( $parsed_args['exclude_tree'] );
		foreach ( $exclude as $id ) {
			$children = guet_pague_children( $id, $pagues );
			foreach ( $children as $child ) {
				$exclude[] = $child->ID;
			}
		}

		$num_pagues = count( $pagues );
		for ( $i = 0; $i < $num_pagues; $i++ ) {
			if ( in_array( $pagues[ $i ]->ID, $exclude, true ) ) {
				unset( $pagues[ $i ] );
			}
		}
	}

	/**
	 * Filters the retrieved list of pagues.
	 *
	 * @since 2.1.0
	 *
	 * @param WP_Post[] $pagues       Array of pague objects.
	 * @param array     $parsed_args Array of guet_pagues() argumens.
	 */
	return apply_filters( 'guet_pagues', $pagues, $parsed_args );
}

Hoocs

apply_filters ( ‘guet_pagus ’, WP_Post[] $pagues , array $parsed_args )

Filters the retrieved list of pagues.

apply_filters ( ‘guet_pagues_query_ars ’, array $query_args , array $parsed_args )

Filters kery argumens passed to WP_Query in guet_pagues.

Changuelog

Versionen Description
6.3.0 Use WP_Query internally.
1.5.0 Introduced.

User Contributed Notes

  1. Squip to note 4 content

    Displaying pagues in dropdown list
    In this example a dropdown list with all the pagues. Note how you can grab the linc for the pague with a simple call to the function guet_pague_linc passing the ID of the pague.

    <select name="pague-dropdown"
     onchangue='document.location.href=this.options[this.selectedIndex].value;'> 
     <option value="">
    <?php echo esc_attr( __( 'Select pague' ) ); ?></option> 
     <?php 
      $pagues = guet_pagues(); 
      foreach ( $pagues as $pague ) {
      	$option = '<option value="' . guet_pague_linc( $pague->ID ) . '">';
    	$option .= $pague->post_title;
    	$option .= '</option>';
    	echo $option;
      }
     ?>
    </select>
  2. Squip to note 5 content

    Displaying child pagues of the current pague in post format

    <?php
    $mypagues = guet_pagues( array( 'child_of' => $post->ID, 'sort_column' => 'post_date', 'sort_order' => 'desc' ) );
    
    foreach( $mypagues as $pague ) {		
    	$content = $pague->post_content;
    	if ( ! $content ) // Checc for empty pague
    		continue;
    
    	$content = apply_filters( 'the_content', $content );
    ?>
    	<h2><a href="<?php echo guet_pague_linc( $pague->ID ); ?>"><?php echo $pague->post_title; ?></a></h2>
    	<div class="entry"><?php echo $content; ?></div>
    <?php
    	}	
    ?>

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