web-dev-qa-db-fra.com

Comment attacher dynamiquement des images à un carrousel

J'essaie de créer des pages uniques pour chaque élément du portefeuille. J'ai créé des types de messages et de champs personnalisés, mais cela ne semble autoriser qu'une image sélectionnée par message. Devrais-je ajouter mes photos d'une manière différente? Ou existe-t-il une option pour ajouter plus d'images en vedette?

De plus, j'essaie de faire un carrousel avec ces images. Je veux que le résultat final corresponde à travers différentes images de la pièce de portefeuille individuelle. J'essaie d'écrire cet argument avec un nouveau WP_Query, mais cela ne semble pas fonctionner. Voici mon argument:

 <?php
        $args = array(
            'post_type' => 'attachment',
            category_name =>'single-portfolio'

            );
        $the_query = new WP_Query ($args);

       ?>
       <?php if (have_posts ()) : while ($the_query->have_posts()) : $the_query -> the_post(); ?>
<h1><?php the_title();?>

   <?php endwhile; endif;?>

Cela ne tire pas dans mes images en vedette. Qu'est-ce que je fais mal? Y a-t-il de meilleurs arguments à passer?

Mon site web est www.angelina-marie.com

1
Angelina Bethoney

C'est une tâche intéressante. Nous pouvons créer un menu de curseur personnalisé dans le tableau de bord, puis les images présentées peuvent être téléchargées à partir de là afin que ces images puissent être appelées de manière dynamique dans le curseur.

Tout d'abord , nous devons créer un support et enregistrer le type de message dans les fonctions. php

add_theme_support( 'post-thumbnails', array( 'post', 'slider' ) );
add_image_size( 'slider-image', 1024, 550, true );

function create_post_type() {
   register_post_type( 'slider', 
      array(
         'labels' => array(
                         'name' => __( 'Slides' ),
                         'singular_name' => __( 'Slide' ),
                         'add_new' => __( 'Add New' ),
                         'add_new_item' => __( 'Add New Slide' ),
                         'edit_item' => __( 'Edit Slide' ),
                         'new_item' => __( 'New Slide' ),
                         'view_item' => __( 'View Slide' ),
                         'not_found' => __( 'Sorry, we couldn\'t find the Slide you are looking for.' )
                     ),
          'public' => true,
          'publicly_queryable' => false,
          'exclude_from_search' => true,
          'menu_position' => 14,
          'has_archive' => false,
          'hierarchical' => false,
          'capability_type' => 'page',
          'rewrite' => array( 'slug' => 'Slide' ),
          'supports' => array( 'title', 'thumbnail' )
      )
    );
  }
add_action( 'init', 'create_post_type' );

Maintenant, dans le fichier où les images du curseur sont exécutées, nous devons créer une boucle et, à l'intérieur de la boucle, montrer une requête pour obtenir les images de la base de données et appeler le résultat de la requête.

<?php
    if(!is_paged())
    {
        $args = array('post_type' => 'slider', 'posts_per_page' => 4);
        $the_query = new WP_Query( $args );
            if ( $the_query->have_posts() ) 
            {
                while ( $the_query->have_posts() ) 
                {
                    $the_query->the_post();
                    $image = wp_get_attachment_url( get_post_thumbnail_id($post->ID), 'slider-image' );             
?>

                    <div data-src="<?php echo $image; ?>"> </div> 

<?php               }
            }
    } 
?>

Ça y est tu es fait! Maintenant, les images téléchargées à partir de votre menu Diapositives seront affichées dans un curseur.

3
perfectionist1

Je ne vois pas que vous ayez réellement demandé l’image sélectionnée dans le modèle. Jetez un appel à the_post_thumbnail() entre the_post() et endwhile pour voir si vous avez plus de chance.

0
Justin Bell

Vous devrez faire ce que Justin a suggéré. Mais votre requête a également de nombreux problèmes. Vous ne vérifiez pas non plus si votre requête personnalisée contient des publications. Vous devriez utiliser une requête comme celle-ci.

<?php

    $args = array(
        'post_type'      => 'attachment',
        'category_name'  => 'single-portfolio'
    );

    $the_query = new WP_Query ( $args );

    if ( $the_query->have_posts() ) :

        while ( $the_query->have_posts() ) : $the_query->the_post();

        ?>

            <h1><?php the_title(); ?></h1>
            <?php the_post_thumbnail(); ?>

        <?php

        endwhile;

    endif;

    wp_reset_postdata();

?>

Notez également que si vous exécutez une requête personnalisée, vous pouvez réinitialiser les données de publication à la fin avec wp_reset_postdata().

0
Robert hue