BP_Media_Extractor::extract_images_from_galleries( string $richtext, string $plaintext, array $extra_args = array() )
Extract images in [galleries] shortcodes from text.
Description
Parameters
- $richtext
-
(Required) Content to parse.
- $plaintext
-
(Required) Sanitized version of the content.
- $extra_args
-
(Optional) Bespoke data for a particular extractor (optional).
Default value: array()
Return
(array)
Source
File: bp-core/classes/class-bp-media-extractor.php
779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 | protected function extract_images_from_galleries( $richtext , $plaintext , $extra_args = array () ) { if ( ! isset( $extra_args [ 'post' ] ) || ! is_a ( $extra_args [ 'post' ], 'WP_Post' ) ) { $post = new WP_Post( (object) array ( 'post_content' => $richtext ) ); } else { $post = $extra_args [ 'post' ]; } // We're not using get_post_galleries_images() because it returns thumbnails; we want the original image. $galleries = get_post_galleries( $post , false ); $galleries_data = array (); if ( ! empty ( $galleries ) ) { // Validate the size of the images requested. if ( isset( $extra_args [ 'width' ] ) ) { // A width was specified but not a height, so calculate it assuming a 4:3 ratio. if ( ! isset( $extra_args [ 'height' ] ) && ctype_digit( $extra_args [ 'width' ] ) ) { $extra_args [ 'height' ] = round ( ( $extra_args [ 'width' ] / 4 ) * 3 ); } if ( ctype_digit( $extra_args [ 'width' ] ) ) { $image_size = array ( $extra_args [ 'width' ], $extra_args [ 'height' ] ); } else { $image_size = $extra_args [ 'width' ]; // E.g. "thumb", "medium". } } else { $image_size = 'full' ; } /** * There are two variants of gallery shortcode. * * One kind specifies the image (post) IDs via an `ids` parameter. * The other gets the image IDs from post_type=attachment and post_parent=get_the_ID(). */ foreach ( $galleries as $gallery_id => $gallery ) { $data = array (); $images = array (); // Gallery ids= variant. if ( isset( $gallery [ 'ids' ] ) ) { $images = wp_parse_id_list( $gallery [ 'ids' ] ); // Gallery post_parent variant. } elseif ( isset( $extra_args [ 'post' ] ) ) { $images = wp_parse_id_list( get_children( array ( 'fields' => 'ids' , 'order' => 'ASC' , 'orderby' => 'menu_order ID' , 'post_mime_type' => 'image' , 'post_parent' => $extra_args [ 'post' ]->ID, 'post_status' => 'inherit' , 'post_type' => 'attachment' , ) ) ); } // Extract the data we need from each image in this gallery. foreach ( $images as $image_id ) { $image = wp_get_attachment_image_src( $image_id , $image_size ); $data [] = array ( 'url' => $image [0], 'width' => $image [1], 'height' => $image [2], 'gallery_id' => 1 + $gallery_id , ); } $galleries_data [] = $data ; } } /** * Filters image galleries extracted from text. * * @since BuddyPress 2.3.0 * * @param array $galleries_data Galleries. See {@link BP_Media_Extractor::extract_images_from_galleries()}. * @param string $richtext Content to parse. * @param string $plaintext Copy of $richtext without any markup. * @param array $extra_args Bespoke data for a particular extractor. */ return apply_filters( 'bp_media_extractor_galleries' , $galleries_data , $richtext , $plaintext , $extra_args ); } |
Changelog
Version | Description |
---|---|
BuddyPress 2.3.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.