[Résolu] Id du dernier article (ctp) créé

  • WordPress :4.9.9
  • Statut : résolu
9 sujets de 1 à 9 (sur un total de 9)
  • Auteur
    Messages
  • #2202659
    virtazp
    Participant
    Padawan WordPress
    60 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL :
    • Thème utilisé : OceanWp
    • Extensions en place :
    • Nom de l’hébergeur :
    • Adresse du site :

    Problème(s) rencontré(s) :

    Bonjour à tous,

    J’ai créé un CPT et je cherche la manière de récupérer le dernier id de l’article qui sera créé via le CPT. J’ai bien the_ID() mais je récupère tous les id or je ne veux que le dernier.
    Merci d’avance.

    #2202662
    CAMEO172
    Participant
    Maître WordPress
    1395 contributions

    Si la CPT s’appelle epicerie

     

    $featured_query_args_epicerie = array (  
    post_type => epicerie,  
    showposts => 1,);
    $featured_query_epicerie = new WP_Query($featured_query_args_epicerie);
    while ($featured_query_epicerie->have_posts()) : $featured_query_epicerie->the_post();

    #2202670
    virtazp
    Participant
    Padawan WordPress
    60 contributions

    ok ça fonctionne merci 🙂

    • Cette réponse a été modifiée le il y a 1 année et 3 mois par virtazp.
    #2202686
    CAMEO172
    Participant
    Maître WordPress
    1395 contributions

    en changeant le 1 par un autre chiffre, tu peux ainsi afficher par exemple les 3 derniers articles de ce CPT.

    C’est ce que je fais

     

    bien penser à faire un wp_reset_query(); à la fin

    #2202700
    virtazp
    Participant
    Padawan WordPress
    60 contributions

    Vu que je vois que vous vous y connaissez plutôt bien 🙂 J’en profite.

    J’ai fais un CPT “Actualite” et j’ai créé une page dans laquelle j’appelle tous mes articles issus du CPT. Mais j’aimerai afficher seulement 6 articles et avoir un bouton qui me permet d’en afficher 6 de plus.

    
        <?php $nbrDePost = '6';
        $testId;
        ?>
    
        <?php $loop = new WP_Query( array( 'post_type' => 'Actualite', 'posts_per_page' => $nbrDePost ) ); ?>
        <?php if ($loop->have_posts ()) :
            while ($loop->have_posts()) : 
                $loop->the_post(); 
       ?>
                <div class="centrerBlocs2" id="actualitePrinc"> 
                <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12 ">
                    <a href="<?php the_permalink(); ?>">
                    <div>
                        <div>
                            <?php $imageArray = get_field('image_à_la_une');
                                $imageAlt = esc_attr($imageArray['alt']);
                                $imageThumbURL = esc_url($imageArray['sizes']['thumbnail']); ?>
                            <img src="<?php echo $imageThumbURL;?>" alt="<?php echo $imageAlt; ?>">
                    
                            <?php the_category(); ?>
                            <h4><?php the_title(); ?></h4>
                            <p><?php echo custom_field_excerpt();?></p>
                    </div>
                </div>
                </a>
            </div>
            </div>
            <?php endwhile; ?>
    
            <?php   else: ?>
            <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
                <div class="listeOffreEmploi ">
                    <div class="blocContent">
                        <h4>Aucune offre à pourvoir !</h4>
                    </div>
                </div>
            </div>
    
        <?php endif; 
    
        $featured_query_args_Actualite = array (  
            post_type => Actualite,  
            showposts => 1,);
            $featured_query_Actualite = new WP_Query($featured_query_args_Actualite);
            while ($featured_query_Actualite->have_posts()) : $featured_query_Actualite->the_post(); 
            $testId = get_the_ID();
        endwhile;
        wp_reset_query();
        ?>
        
        <button class="afficherPlus" data-id="<?php echo $testId ?>">Afficher plus</button>
    
        <?php

    Je ne vois pas comment mis prendre pour la suite, je cherche depuis hier sans succès!

    Le but étant de faire cela de manière asynchrone, donc avec une requête ajax en JavaScript. Voici celle que j’ai écrit :

    jQuery(document).on('click', '.afficherPlus', function(e) {
        e.preventDefault();
     
        var offset = jQuery('.afficherPlus').data('id');
     
        jQuery.ajax({
            url : '/Wordpress/wp-content/themes/atoll-solutions/testfichier.php',
            type: 'POST',
            data: offset,
            success : function (data) {
                jQuery("#actualitePrinc").replace(data.articles)
            },
            error : function(){
                console.log("erreur");
            }
        });
    })

    Au click du bouton, je récupère l’id du dernier article et je fais une requête POST avec cette id comme donnée et il me manque le traitement finalement de cette id, dois-je faire une requête SQL ? ou autre? Merci beaucoup.

    #2202745
    CAMEO172
    Participant
    Maître WordPress
    1395 contributions

    j’ai fais autrement. j’avoue que c’est trop complexe et que j’ai peur de vous mener vers une erreur.

    Le résultat : https://www.concertsenboite.fr

     

    la partie javascript :

    var offset = 3; 
    var offsetepicerie = 3;
    jQuery('body').on('click', '.load-more', function() {
    var posttype = 'post'; 
    jQuery('.chargement').show();
    	jQuery.post(
    	    ajaxurl,
    	    {
    	        'action': 'load_more',
    	        'offset': offset,
    	        'posttype': posttype,
    	        
    	    },
    	    function(response){
    		
    	    	offset= offset + 3;
    	    	jQuery('.alasuite').append(response);
    jQuery('.chargement').hide();
    	    }
    
    	);
    
    });
    
    jQuery('body').on('click', '.load-moreepic', function() {
    var posttype = 'epicerie'; 
    jQuery('.chargementepi').show();
     
    	jQuery.post(
    	    ajaxurl,
    	    {
    	        'action': 'load_more',
    	        'offsetepicerie': offsetepicerie,
    	        'posttype': posttype,
    	    },
    	    function(response){
    	    	offsetepicerie= offsetepicerie + 3;
    	    	jQuery('.alasuiteepic').append(response);
    jQuery('.chargementepi').hide();
    	    }
    	);
    });

     

    La partie function.php (j’en donne qu’un extrait) qui devrait donner l’idée général :

    add_action( 'wp_ajax_load_more', 'load_more' );
    add_action( 'wp_ajax_nopriv_load_more', 'load_more' );
    
    function load_more() {
            global $post;
           
    
    $offset = $_POST['offset'];
    $offsetepicerie = $_POST['offsetepicerie'];
    $posttype = $_POST['posttype'];
    $tax_id = $_POST['tax_id'];
    $taxo = $_POST['taxo'];
    $taxo_nom = $_POST['taxo_nom'];
    
    if ($taxo==1){ 
        $args = array(
    	   
    	    'offset' => $offset,
    	    'showposts' => 3,
    		'post_status' => publish,
    		'tax_query' => array(
    		array(
    			'taxonomy' => $taxo_nom,
    			'field'    => 'term_id',
    			'terms'    => $tax_id,
    		),
    	),
    	);
        
    }
    
    	$ajax_query = new WP_Query($args);
    
    	if ( $ajax_query->have_posts() ) : while ( $ajax_query->have_posts() ) : $ajax_query->the_post();

     

     

    #2202749
    CAMEO172
    Participant
    Maître WordPress
    1395 contributions

    Essayer d’espionner le site et de comprendre comment j’y suis arrivé. moi le premier j’en suis étonné.

    Ce n’est pas codé parfait mais toutes mes catégories et même ma recherche fonctionne ainsi pour éviter les 20 pages vides de sens

    #2202896
    virtazp
    Participant
    Padawan WordPress
    60 contributions

    Super, merci pour votre réponse! Actuellement je suis sur un autre projet jusqu’à vendredi, j’essaierai votre solution lundi et je vous en tiendrai informé ! Merci beaucoup.

    Edit: sur votre site, c’est exactement ce que je cherche à faire.

    • Cette réponse a été modifiée le il y a 1 année et 3 mois par virtazp.
    #2204828
    virtazp
    Participant
    Padawan WordPress
    60 contributions

    Re 🙂 Vous m’avez donné la bonne piste et un grand merci !

    add_action('wp_head', 'myplugin_ajaxurl');
    
    function myplugin_ajaxurl() {
        echo '<script type="text/javascript">
               var ajaxurl = "' . admin_url('admin-ajax.php') . '";
             </script>';
    }
    add_action( 'wp_ajax_load_more', 'load_more' );
    add_action( 'wp_ajax_nopriv_load_more', 'load_more' );
    
    function load_more() {
        global $post;
    
    	$offset = $_POST['offset'];
    	$posttype = $_POST['posttype'];
    	/*
    	$tax_id = $_POST['tax_id'];
    	$taxo = $_POST['taxo'];
    	$taxo_nom = $_POST['taxo_nom'];
    	*/
    	//if ($taxo==1){ 
    		$args = array(
    		
    			'offset' => $offset,
    			'showposts' => 3,
    			'post_status' => publish,
    			'post_type' =>$posttype,
    		);
    
    	$ajax_query = new WP_Query($args);
    
    	if ( $ajax_query->have_posts() ) : while ( $ajax_query->have_posts() ) : $ajax_query->the_post();
    	
    	get_template_part( 'get-article' );
    
    	endwhile;
    	endif; 
    	die();
    }
    Dans function.php

    <div class="post">
    
    <div class="centrerBlocs2" > 
                            <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12 ">
                                <a href="<?php the_permalink(); ?>">
                                <div>
                                    <div>
                                        <?php $imageArray = get_field('image_à_la_une');
                                            $imageAlt = esc_attr($imageArray['alt']);
                                            $imageThumbURL = esc_url($imageArray['sizes']['thumbnail']); ?>
                                        <img src="<?php echo $imageThumbURL;?>" alt="<?php echo $imageAlt; ?>">
                                
                                        <?php the_category(); ?>
                                        <h4><?php the_title(); ?></h4>
                                        <p><?php echo custom_field_excerpt();?></p>
                                </div>
                            </div>
                            </a>
                        </div>
                        </div>
    </div>
    Dans get-article.php

    	var offset = 3;
    
    	jQuery('body').on('click', '.load-moreepic', function () {
    		var posttype = 'Actualite';
    		jQuery('.chargementepi').show();
    		jQuery.post(
    			ajaxurl,
    			{
    				'action': 'load_more',
    				'offset': offset,
    				'posttype': posttype,
    			},
    			function (response) {
    				offset = offset + 3;
    				jQuery('#actualitePrinc').append(response);
    				jQuery('.chargementepi').hide();
    			}
    		);
    	});
    Et mon javascript

9 sujets de 1 à 9 (sur un total de 9)
  • Vous devez être connecté pour répondre à ce sujet.