widget wordpress et problème de contenu de publication

Publié par Jean-Michel le

Je suis légèrement bloqué. Le modèle que j’utilise a un type de publication personnalisé appelé produits. Lorsque j’ajoute des articles/pages ici, je peux les afficher à l’aide d’un code de widget dans une page.

Le widget affiche le contenu saisi dans les champs personnalisés, mais je ne peux pas trouver comment modifier le code afin d’afficher le contenu de la section Contenu de type post personnalisé. Un aperçu?

C’est le code du fichier shortcodes.php qui produit le widget.

   $count_posts = wp_count_posts('product');
    $published_posts = $count_posts->publish;
    $out ='';
    $out .=' <div class="pricing-table">';
        $out .= '<ul>';
        $counter = 0;
        while ( have_posts() ) : the_post();
        $counter++;
        $product_price = get_post_meta($post->ID,'_product_price',true);
          $out .= '<li class="heading-column '.$class_heading.' color'.$counter.'">';
            $out .= '<h3>'.get_the_title().'</h3>';
            $out .= '<h5>';
            $out .= $currency ? $currency : "$";
            $out .= $product_price;
            if ($billing_cycle == "none") {
              $out .= "";
            } else {
              $out .= ' per '.$billing_cycle;
            }
            $out .= '</h5>';
          $out .= '</li>';
        endwhile;
        $out .= '</ul>';

        $out .= '<div class="clear"></div>';
        $out .= '<ul>';
        while ( have_posts() ) : the_post();
        $product_url = get_post_meta($post->ID,'_product_url',true);
        $product_feature = get_post_meta($post->ID,'_product_feature',true);
        $features_list = explode(",",$product_feature);
        $counter++;
          $out .= '<li class="pric-column '.$class_column;
          if ($counter%$columns==0) $out .= '-last';
          $out .= '">';
            foreach ($features_list as $flist) {
            $out .= '<ul class="feature-list">';
              $out .= '<li>'.$flist.'</li>';
            }
            $out .= '<li class="last">';
            $out .= '<a class="button" href="'.$product_url.'"><span>'.$product_button_text.'</span></a>';
            $out .= '</li>';
            $out .= '</ul>';
      endwhile;wp_reset_query();
      $out .= '</ul>';
  $out .= '</div>';

  return '[raw]'.$out.'[/raw]';
}

Solution n°1 trouvée

votre code ne fonctionne pas car the loopn’est pas rempli.
Là pour cela il fera la boucle par défaut de la page. (si ce n’est pas déjà fait, c’est le cas)

Aussi, vous faites des choses qui ne ressemblent en rien à $published_posts.

Vous devez créer une boucle personnalisée avec WP_Query.

Une petite aide pour démarrer :

$query_args = array(
    'post_type' => 'products', // the post type name
    'post_status' => 'publish',
);
$products = new WP_Query ($query_args)

// before loop stuff like opening tags
while($products->have_posts()): $products->the_post();
    // do your stuff like display post_meta
endwhile;
// after loop stuff like closing tags

Cela devrait vous aider à démarrer.
Si vous avez besoin d’aide, faites le moi savoir !

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *