Bouton submit current post dans une boucle wp

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Bouton submit current post dans une boucle wp

Re: Bouton submit current post dans une boucle wp

par two3d » 23 mai 2023, 10:18

Et si tu clic sur Modifier (lien href avec post_id) ça modifie bien le post souhaité ?

Re: Bouton submit current post dans une boucle wp

par sanka0579 » 23 mai 2023, 09:55

Bonjour two3d,

Je te remercie pour la réponse, cependant même avec un identifiant j'ai encore un soucis.

Lorsque je clique sur le bouton, cela m'actualise seulement le dernier post, et non pas le post concerné...

J'avoue galérer là....

Re: Bouton submit current post dans une boucle wp

par two3d » 22 mai 2023, 06:18

Je pense qu'il te faut un identifiant dans chacun de tes formulaires pour identifier qui tu veut modifier :
<form method="post">
<input type="hidden" name="post_id" value="<?= $post_id ?>">
<input type="submit" value="Relancer" name="relancer">
</form>
Puis en PHP :
if(isset($_POST['relancer'], $_POST['post_id']))

Re: Bouton submit current post dans une boucle wp

par or 1 » 21 mai 2023, 23:38

<form method="post">
<input type="submit" value="Relancer" name="relancer">
</form>
pour chaque ligne, ce n'est pas très utile.
avec un ou plusieurs champs dans le formulaire, hidden si nécessaire, cela sera plus utile.

Bouton submit current post dans une boucle wp

par sanka0579 » 21 mai 2023, 19:41

Bonjour,

Je rencontre un petit soucis avec un bouton de type submit qui est dans une boucle foreach.

Je souhaite modifier des post_metas avec ce bouton, mais il faut que l'action ne se fasse que sur l'annonce concernée.

En gros, il faut que je ressorte le current_id de l'annonce...

Sinon je pense peut-être à une action onclick() avec du Javascript....

Comme la page est assez longue, je vous mets les bouts de code concernés

Je vous remercie d'avance

if(current_user_can('administrator'))
{
   $args = array
   (
     'post_type'        => 'vehica_car',
     'posts_per_page' => -1,
     'paged' => $paged,
     'cache_results'  => false,
     'update_post_meta_cache' => false, 
     'update_post_term_cache' => false,
     'post_status' => array('publish', 'pending', 'draft') 
    );
}
else
{                
   // Get all annonces current user
   $args = array 
   (
    'post_type'        => 'vehica_car',
    'posts_per_page'   => -1,
    'cache_results'  => false,
    'author' => $current_user_id,
    'update_post_meta_cache' => false, 
    'update_post_term_cache' => false,
    'post_status' => array('publish', 'pending', 'draft'),
   );
}

$all_current_user_query = new WP_Query( $args );
$all_annonces_user = $all_current_user_query->posts;

echo'

<div class="afs-col-3">
 <div class="afs-garage-listing-box">
  <div class="afs-garage-listing-box-title">
    <h3>Toutes mes annonces</h3>
    <div class="afs-garage-listing-box-title-count">(' . count($all_annonces_user) . ')</div>
   </div>
   <div class="afs-garage-listing-box-content">';
                                             
    // Start loop all annonces
    foreach($all_annonces_user as $annonce)
    {   
     // Infos annonce
     $post_id = $annonce->ID;
     $post_link = get_permalink($post_id);
     $post_title = get_post_meta($post_id, 'vehica_39814', true);
     $auction_modele = get_post_meta($post_id, 'vehica_39815', true);
     $auction_type = get_the_terms($annonce->ID, 'vehica_19636');
     $auction_type_slug = $auction_type[0]->slug; 

     // Car infos                                                    
     $images_gallery = get_post_meta($post_id, 'vehica_19246');
     $first_img_src = wp_get_attachment_image_src($images_gallery[0], 'small');
     $post_boite = get_post_meta($post_id, 'vehica_48484', true);
     $post_km = get_post_meta($post_id, 'vehica_48173', true);
     $post_fuel = get_post_meta($post_id, 'vehica_48489', true);
     $post_imm_date = get_post_meta($post_id, 'vehica_19190', true);
     $post_finitions = get_post_meta($post_id, 'vehica_19193', true);
     $content = wp_trim_words(get_post_field('post_content', $annonce->ID), 8, '...');
                                                           
     echo '
                                                            
     <div class="afs-panel-card">
      <div class="afs-panel-card__image">
       <img src="' . $first_img_src[0] . '" alt="' . $post_title . '">
      </div> 

      <div class="afs-panel-card__details">
       <a href="' . $post_link . '">
        <div class="afs-panel-card__details_title">' . $post_title . ' ' . $auction_modele . ' ' . $post_finitions . '</div>
       </a>

       <div class="afs-panel-card__details-infos">                                                                                                             
        <div class="afs-panel-card__details-infos-item">' . $post_imm_date . '</div>
        <div class="afs-panel-card__details-infos-item">' . $post_km . ' Km</div>';

        if(empty($all_annonces_in_progress) && empty($all_annonces_reserved))
        {
         echo '
                                                                                
         <a href="https://encheres24.ch/panel/?action=edit&amp;id=' . $post_id . '">Modifier</a>

         <form method="post">
          <input type="submit" value="Relancer" name="relancer">
         </form>';
        }
       }
      </div>
     </div>  
    </div>';  
                                                                                                                                        
   }

   </div>
  </div>
</div>';

if(isset($_POST['relancer']))
{
    delete_post_meta( $post_id, 'auction_list');
    delete_post_meta( $post_id, 'auction_winner');
    delete_post_meta( $post_id, 'auction_price_status');
    delete_post_meta( $post_id, 'auction_email_winner_sended');
    delete_post_meta( $post_id, 'auction_email_soon_endend_sended');
    delete_post_meta( $post_id, 'auction_email_soon_sended');

    // set new date
    $now = date('N');        
    
    $next_date = 'mardi';

    $next_date_str = strtotime('next tuesday');
    $next_date_str = date("d.m.Y", $next_date_str);

    update_post_meta($post_id, 'vehica_20836', $next_date_str);
    update_post_meta($post_id, 'vehica_20856', '10:00');
    update_post_meta($post_id, 'auction_status', 'soon');
                                                            
}