Первые три изображения в выдержке после

У меня есть определенные должности, которые представляют собой не что иное, как [галерею] с несколькими изображениями в них. Есть ли способ определить автоматически сгенерированную выдержку, чтобы отображать только первые три изображения для этих сообщений в индексе, чтобы пользователи могли щелкнуть, чтобы увидеть остальные? Спасибо.

Solutions Collecting From Web of "Первые три изображения в выдержке после"

Вы можете сделать это довольно легко, используя функцию do_shortcode .

Проверьте, существует ли экземпляр [gallery] в вашем сообщении.

Вот простая функция drop in functions.php, которая проверяет содержимое текущей записи для короткого кода галереи:

 function gallery_shortcode_exists(){ global $post; # Check the content for an instance of [gallery] with or without arguments $pattern = get_shortcode_regex(); if( preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches ) && array_key_exists( 2, $matches ) && in_array( 'gallery', $matches[2] ) ) return true; # Sourced from http://codex.wordpress.org/Function_Reference/get_shortcode_regex } 

Используйте do_shortcode() для рендеринга вашей галереи.

Вы можете использовать следующее в цикле в файлах шаблонов:

 # Determine if the post_content column contains the string [gallery] if( gallery_shortcode_exists() ){ # Get the first three attachments using the posts_per_page parameter $args = array( 'post_type' => 'attachment', 'post_mime_type' => 'image', 'posts_per_page' => 3, 'post_parent' => get_the_ID() ); $attachments = get_children( $args ); # If any attachments are returned, proceed if( $attachments ){ # Spin cycle to collate attachment IDs foreach( $attachments as $attachment ) $includes[] = $attachment->ID; # Format our IDs in a comma-delimited string $includes = implode(',', $includes); # Inject your include argument $shortcode = str_replace('[gallery', "[gallery include='$includes' ", get_the_content()); # Render the Gallery using the standard editorial input syntax echo do_shortcode($shortcode); # Add a View More link echo '<a href="' . get_permalink() . '">' . __('View more', 'domain') . '</a>'; } else _e('Foo Bar - No attachments found and no excerpt to display', 'domain'); } else # Whatever fallback you desire the_excerpt();