web-dev-qa-db-fra.com

Comment limiter une image par publication sur la page d'accueil uniquement?

la plupart de mes messages sur wordpress ont 6 ou 5 images perpost. Mon problème est que si je publiais 5 nouveaux messages avec de nouvelles images, cela ferait un total de 25 images affichées sur ma page d'accueil.

Je veux limiter 1 image perpost sur "page d'accueil uniquement", le contenu complet (disons 6 images au total, ce sera sur une seule page).

Quelqu'un sait comment le faire??

Ou tout autre plug-in d'extrait d'image pouvant limiter l'image sur la page d'accueil?

2
kurima

J'utilise cela dans vos thèmes functions.php

// function (image toolbox) for all images
 function attachment_toolbox($size = thumbnail) { 

if($images = get_children(array(
    'post_parent'    => get_the_ID(),
    'post_type'      => 'attachment',
    'numberposts'    => 1, // show all images is -1
    'post_status'    => null,
    'post_mime_type' => 'image',
))) {
    foreach($images as $image) {
        $attimg   = wp_get_attachment_image($image->ID,$size);

        $postlink = get_permalink($image->post_parent);


        echo '<a href="'.$postlink.'">'.$attimg.'</a>';

    }
}

}

et appelez-le dans votre boucle avec

<div class="around_image"> 
  <?php attachment_toolbox('medium'); ?>
</div><!-- / around_image -->

c'est tout droit sorti de mon site que je travaille en ce moment, changez "moyen" pour la taille de la photo souhaitée, "miniature", "moyen", "grand" ou "full_size"

pour plus d'informations , cliquez ici

1
MartinJJ
/**
 * @author: wpreceipes
 * @link: [1]: http://www.wprecipes.com/how-to-get-the-first-image-from-the-post-and-display-it
 */
function wpse18215_catch_that_image() 
{
    global $post, $posts;
    $first_img = '';
    ob_start();
    ob_end_clean();
    $output = preg_match_all( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches );
    $first_img = $matches[1][0];

    //Defines a default image
    if( empty( $first_img ) )
    { 
        $first_img = '/images/default.jpg';
    }
    return $first_img;
}

Exemple:

echo catch_that_image();

ou:

/**
 * @author: Marcelo Mesquita
 * @link: http://marcelomesquita.com/
 * @param (string) $size - valid: 'thumbnail', 'medium', 'large' or 'full_size'
 * @param (string) $add - any additional attributes for the html-img tag
 */
function wpse18215_the_thumb( $size = 'medium', $add = '' )
{
    global $wpdb, $post;

    $thumb = $wpdb->get_row( 
        "SELECT ID, 
         post_title 
         FROM {$wpdb->posts} 
         WHERE post_parent = {$post->ID} 
         AND post_mime_type 
         LIKE 'image%' 
         ORDER BY menu_order"
    );

    if( ! empty( $thumb ) )
    {
        $image = image_downsize( $thumb->ID, $size );
        return "<img src='{$image[0]}' alt='{$thumb->post_title}' {$add} />";
    }
}

Exemple:

echo wpse18215_the_thumb( 'medium', 'class="alignleft" width="200" height="175"' );


Remarque: Vous devez néanmoins insérer l'appel dans votre modèle dans une instruction conditionnelle:

if ( is_home() || is_front_page() ) { /* place the function call here */ }

1
kaiser