J'ai certains articles qui ne sont rien d'autre que [galerie] et qui contiennent pas mal d'images. Existe-t-il un moyen de définir un extrait généré automatiquement pour n’afficher que les trois premières images de ces publications sur l’index, de sorte que les utilisateurs soient obligés de cliquer pour visualiser le reste? Je vous remercie.
Vous pouvez le faire assez facilement en utilisant la fonction do_shortcode
.
[gallery]
existe dans le contenu de votre message.Voici une fonction simple à insérer dans functions.php qui vérifie le contenu de la publication en cours pour le shortcode de la galerie:
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()
pour rendre votre galerie.Vous pouvez utiliser les éléments suivants dans la boucle dans vos fichiers de modèle:
# 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();