Using WordPress ‘get_children()’ PHP function

The get_children() WordPress PHP function retrieves all children of the post parent ID. It can be applied to pages, posts, and attachments.

Usage

get_children( $args, $output );

Example:

Input:

$args = array(
  'post_parent' => 10,
  'post_status' => 'publish',
  'post_type' => 'attachment',
);

$children = get_children( $args, ARRAY_A );

Output: Returns an associative array of children.

Parameters

  • $args (mixed): Optional. User defined arguments for replacing the defaults. Default: ''
  • $output (string): Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to a WP_Post object, an associative array, or a numeric array, respectively. Default: OBJECT

More information

See WordPress Developer Resources: get_children()

Examples

Display the first image associated with the post

function display_first_image( $post_id ) {
  $args = array(
    'posts_per_page' => 1,
    'order' => 'ASC',
    'post_mime_type' => 'image',
    'post_parent' => $post_id,
    'post_status' => null,
    'post_type' => 'attachment',
  );

  $attachments = get_children( $args );

  if ( $attachments ) {
    foreach ( $attachments as $attachment ) {
      echo '<img src="' . esc_url( wp_get_attachment_thumb_url( $attachment->ID ) ) . '" class="current" />';
    }
  }
}

Retrieve and re-key the array of the first image associated with the post

$args = array(
  'posts_per_page' => 1,
  'order' => 'DESC',
  'post_mime_type' => 'image',
  'post_parent' => $post->ID,
  'post_type' => 'attachment'
);

$get_children_array = get_children( $args, ARRAY_A );
$rekeyed_array = array_values( $get_children_array );
$child_image = $rekeyed_array[0];

Get all parent post IDs

$post_type = "post";
$post_status = "any";
$num_of_posts = -1;
$post_parent = 0;

$args = array('post_parent' => 0, 'post_type' => $post_type, 'numberposts' => $num_of_posts, 'post_status' => $post_status);
$parents = get_children($args);

foreach ($parents as $parent) {
  echo "<br>ParentID: " . $parent->ID;
}

Get an array of child IDs only

$child_ids = get_children( [
  'post_parent' => $post_id,
  'fields' => 'ids',
] );