Annonce

Faites la différence entre le service WordPress.com et l'application libre WordPress.

Mettez-vous à jour ! WordPress 3.3.2 est disponible en français.

Annonce 1 : Le Codex en français a besoin de vous pour avancer !
Annonce 2 : Avant de poster, n'oubliez pas de faire une petite recherche et de lire les règles de ce forum.
Annonce 3 : Lisez notre blog, il regorge de bonnes informations.
Annonce 4 : Rejoignez-nous sur Facebook, Google + et sur Twitter

#1 24-01-2012 16:21:39

jfsenechal
Connaisseur WP
Date d'inscription: 26-05-2011
Messages: 41

Récupérer les posts des différents blogs

Bonjour,

Ma configuration WP actuelle
- Version de WordPress : 3.3.1
- Version de PHP/MySQL :
- Thème utilisé :
- Extensions en place :
- Nom de l'hebergeur :
- Adresse du site :

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

Hello

sur une page j'affiche les posts issues des différents blogs
j'utilise la technique du switchblog

Code: html

 <?php 
switch_to_blog(2, true);
            global $post;

            $args = array('numberposts' => 10, 'order' => 'ASC', 'orderby' => 'title', 'category_name' => 'News');
            $myposts = get_posts($args);

...
switch_to_blog(3, true);
            global $post;

            $args = array('numberposts' => 10, 'order' => 'ASC', 'orderby' => 'title', 'category_name' => 'News');
            $myposts = get_posts($args);
 restore_current_blog()
?>

Il y a-t-il un moyen plus élégant ?

Hors ligne

 

#2 25-01-2012 02:21:38

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3210

Re: Récupérer les posts des différents blogs

Comment est-ce que tu affiches les données récupérées : les unes à la suite des autres ou bien tu fais x tableaux que tu fusionnes, tries et affiches d'un seul trait ?

Hors ligne

 

#3 25-01-2012 08:54:24

jfsenechal
Connaisseur WP
Date d'inscription: 26-05-2011
Messages: 41

Re: Récupérer les posts des différents blogs

J'affiche directement dans ma boucle

Code: html

<?php
 $myposts = get_posts($args);
            foreach ($myposts as $post) : setup_postdata($post);
                ?>
                <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
            <?php endforeach; ?>

Dernière modification par jfsenechal (25-01-2012 08:55:09)

Hors ligne

 

#4 25-01-2012 18:03:37

RaBoLo
Habitué WP
Date d'inscription: 12-11-2010
Messages: 86
Site web

Re: Récupérer les posts des différents blogs

Bonjour,
J'aimerais comprendre cette technique serait-il possible de m'éclaircir davantage.
Dans quel page ou dans la boucle par exemple...
merci d'avance


www.rabolo.com un petit pas sur la toile avec un annuaire généraliste

Hors ligne

 

#5 26-01-2012 09:16:30

jfsenechal
Connaisseur WP
Date d'inscription: 26-05-2011
Messages: 41

Re: Récupérer les posts des différents blogs

J'utilise ça dans home.php pour afficher les posts issues de la rubrique news de chaque sous sites

Voici le code plus au complet

Code: html

 <ul>
            <?php
            global $post;

            $args = array('numberposts' => 10, 'order' => 'ASC', 'orderby' => 'title', 'category_name' => 'News');
            $myposts = get_posts($args);
            foreach ($myposts as $post) : setup_postdata($post);
                ?>
                <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
            <?php endforeach; ?>
        </ul>

    </div>
    <div>  
        <?php switch_to_blog(3, true) ?>
...
on répète la boucle
....
  <?php switch_to_blog(4, true) ?>
...

//on retourne au blog courant
<?php restore_current_blog() ?>

Hors ligne

 

#6 26-01-2012 09:37:25

Guy
Blogueur
Date d'inscription: 07-04-2011
Messages: 6772

Re: Récupérer les posts des différents blogs

je pense que tu peux faire une boucle sur tous les blogs, à moins que tu ne veuilles contrôler quels blogs tu veux voir apparaitre.

(a tester)

Code: html

global $wpdb;
$blogs = $wpdb->get_results("SELECT blog_id FROM wp_blogs");

foreach( $blogs as $blog ) {
     switch_to_blog($blog->blog_id, true);
     
    // ton traitement sur la boucle des articles du blog, etc....
    // mettre titre du blog

    // loop sur article du blog
   

    // je ne sais pas trop si il faut mettre le restore ici ou après la boucle foreach
    restore_current_blog()
}

Hors ligne

 

#7 26-01-2012 10:52:11

jfsenechal
Connaisseur WP
Date d'inscription: 26-05-2011
Messages: 41

Re: Récupérer les posts des différents blogs

@Guy

Oui en effet, je l'utilise dans d'autres endroits
ici c'était volontaire ;-)

Hors ligne

 

#8 26-01-2012 11:04:57

Guy
Blogueur
Date d'inscription: 07-04-2011
Messages: 6772

Re: Récupérer les posts des différents blogs

D'accord, en ce cas, a moins de mettre manuellement les id dans un tableau et le parcourir, je ne vois pas trop ce que tu peux faire de mieux.

Code: html

$tab_id = array(1,2,5,8);
foreach($tab_id as $blogid)
{
     blabla....
}

Hors ligne

 

#9 29-01-2012 23:13:28

RaBoLo
Habitué WP
Date d'inscription: 12-11-2010
Messages: 86
Site web

Re: Récupérer les posts des différents blogs

bonsoir et merci de vos réponse finalement j'ai réussi à afficher les article des sous sites.
J'ai également trouvé une autre façon d'afficher c'est :

Code: html

<ul>
<?php switch_to_blog(2); ?>
<?php $my_query = new WP_Query('posts_per_page=5');
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?></ul>
<?php restore_current_blog(); ?>

J'aimerais soigner mon affichage pourriez me dire comment faire pour afficher une description issue d'un champ personnalisé ? aussi afficher ce dernier (description) uniquement sur le premier article.
merci de votre aide

Dernière modification par RaBoLo (29-01-2012 23:15:02)


www.rabolo.com un petit pas sur la toile avec un annuaire généraliste

Hors ligne

 

#10 30-01-2012 09:59:17

jfsenechal
Connaisseur WP
Date d'inscription: 26-05-2011
Messages: 41

Re: Récupérer les posts des différents blogs

En utilisant la fonction

Code: html

<?php
get_post_meta($post_id, $key, $single);

http://codex.wordpress.org/Function_Ref … _post_meta

Pour n'afficher qu'une fois la description, tu peux mettre une condition dans ta boucle

Code: html

<?php $my_query = new WP_Query('posts_per_page=5');
$i = 1;
while ($my_query->have_posts()) : $my_query->the_post(); 
$ma_description = get_post_meta(get_the_ID(), "ma_description", true);
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a>
<?php if($i) echo $ma_description; else $i = 0; ?>
</li>
<?php endwhile; ?>

Hors ligne

 

#11 30-01-2012 16:06:48

RaBoLo
Habitué WP
Date d'inscription: 12-11-2010
Messages: 86
Site web

Re: Récupérer les posts des différents blogs

bonjour et merci jfsenechal pour ta réponse rapide, je regarde ce soir...

salutation


www.rabolo.com un petit pas sur la toile avec un annuaire généraliste

Hors ligne

 

#12 30-01-2012 22:37:09

RaBoLo
Habitué WP
Date d'inscription: 12-11-2010
Messages: 86
Site web

Re: Récupérer les posts des différents blogs

Bonsoir,
merci jfsenechal pour ton aide mais après plusieurs essais, je n'arrive pas à afficher comme je veux. La description apparaît pour tous les articles.
Devais-je installer la fonction

Code: html

<?php
get_post_meta($post_id, $key, $single); ?>

quelque part ? (pour info: j'ai tenté mais sans succès)

merci d'avance

Dernière modification par RaBoLo (30-01-2012 22:37:51)


www.rabolo.com un petit pas sur la toile avec un annuaire généraliste

Hors ligne

 

#13 31-01-2012 09:15:22

jfsenechal
Connaisseur WP
Date d'inscription: 26-05-2011
Messages: 41

Re: Récupérer les posts des différents blogs

a oui je me suis trompé, remplace

Code: html

<?php if($i) echo $ma_description; else $i = 0; ?>

par

Code: html

<?php echo $i; if($i) echo $ma_description; $i = 0; ?>

j'ai testé ça fonctionne

Hors ligne

 

#14 31-01-2012 22:47:44

RaBoLo
Habitué WP
Date d'inscription: 12-11-2010
Messages: 86
Site web

Re: Récupérer les posts des différents blogs

Merci jfsenechal, le script marche à merveille, seulement j'ai un petit souci.
A la fin de chaque titres :
j'ai "1" pour le premier article
et "0" pour le reste des article.
J'ai bidouiller pas mal rien à faire. As tu remarqué lorsque tu as testé de ton côté ?
merci


www.rabolo.com un petit pas sur la toile avec un annuaire généraliste

Hors ligne

 

#15 01-02-2012 13:53:05

jfsenechal
Connaisseur WP
Date d'inscription: 26-05-2011
Messages: 41

Re: Récupérer les posts des différents blogs

Code: html

<?php echo $i; if($i) echo $ma_description; $i = 0; ?>

Je ne sais pas trop pq il y a un echo $i; qui traine ;-)

Faut l'effacer

Code: html

<?php if($i) echo $ma_description; $i = 0; ?>

Hors ligne

 

#16 01-02-2012 21:51:09

RaBoLo
Habitué WP
Date d'inscription: 12-11-2010
Messages: 86
Site web

Re: Récupérer les posts des différents blogs

merci ça marche nickel, désolé je suis nul en php et ça se confirme sad
juste une question, si je voulais afficher uniquement l'image du premier article est-ce que ça marche dans la même logique ?

Avec bidouillage, lorsque j'ajoute dans le code la variable $img et $first_img... j'arrive à afficher la première image mais je vois également les autres images en croix rouge (non trouvé) comment puis-je les faire disparaître?
Désolé je suis vraiment nul

Code: html

<?php $my_query = new WP_Query('posts_per_page=5');
$i = 1; 
$img = 1;
while ($my_query->have_posts()) : $my_query->the_post();
$ma_description = get_post_meta(get_the_ID(), "description_rss", true);
$first_img = get_recent_news_image($post->ID, 'recent-img', true);
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php if($i) echo $ma_description; $i = 0; ?>
<img src="http://sous.site.com/wp-content/themes/headliner/scripts/timthumb.php?src=<?php if($img) echo $first_img; $img = 0; ?>&amp;w=221&amp;h=100&amp;zc=1&amp;q=100&amp;cropfrom=topcenter" alt="<?php the_title(); ?>" class="aligncenter" />
<?php endwhile; ?></ul>

Dernière modification par RaBoLo (01-02-2012 23:52:22)


www.rabolo.com un petit pas sur la toile avec un annuaire généraliste

Hors ligne

 

#17 01-02-2012 22:24:01

jfsenechal
Connaisseur WP
Date d'inscription: 26-05-2011
Messages: 41

Re: Récupérer les posts des différents blogs

il va falloir ajouter des accolades

Code: html

<?php 
if($i) { 
echo $ma_description;
echo get_the_post_thumbnail($get_the_ID(), 'thumbnail', array('class' => 'alignleft'));
$i = 0; 
}
?>

une classe CSS alignleft qui cale l’image sur la gauche. Le thème disposant de son équivalent alignright pour un placement à droite, libre à vous de modifier cette dernière

j'ai pas essayé

Hors ligne

 

#18 01-02-2012 23:51:51

RaBoLo
Habitué WP
Date d'inscription: 12-11-2010
Messages: 86
Site web

Re: Récupérer les posts des différents blogs

merci jfsenechal,
j'arrive à afficher la première image avec la version de mon dernier post et du coup les images des autres postes s'affiche aussi en croix rouge.

avec ton code la page se bloque en chargement (je me connais absolument pas en php) lorsque j’enlève le $ de $get_the_ID ça charge avec toutes les images en croix rouge.


www.rabolo.com un petit pas sur la toile avec un annuaire généraliste

Hors ligne

 

#19 02-02-2012 09:06:48

jfsenechal
Connaisseur WP
Date d'inscription: 26-05-2011
Messages: 41

Re: Récupérer les posts des différents blogs

Voila ça devrait aller

Code: html

 
<?php
$my_query = new WP_Query('posts_per_page=5');
$i = 1;
while ($my_query->have_posts()) : $my_query->the_post();
?>
   <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a>
  <?php
   if ($i) {
   $ma_description = get_post_meta(get_the_ID(), "ma_description", true);
    echo $ma_description;                            
    if (has_post_thumbnail()) {
   echo get_the_post_thumbnail(get_the_ID(),'thumbnail', array('class' => 'alignleft'));
  } 
   $i = 0;
  }
   ?>
 </li>
<?php endwhile; ?>

Dernière modification par jfsenechal (02-02-2012 09:08:17)

Hors ligne

 

#20 04-02-2012 01:42:20

RaBoLo
Habitué WP
Date d'inscription: 12-11-2010
Messages: 86
Site web

Re: Récupérer les posts des différents blogs

Merci jfsenechal d'avoir consacré ton temps sur mon problème.
Après de long heures depuis 2 jours, j'ai pas réussi à afficher la première image du premier article avec ton code, seulement le code suivant marche comme je veux à un poil près, c'est la taille de l'image qui ne correspond pas à 220x100 (que je n'arrive pas a modifier)

Code: html

<ul>
<?php switch_to_blog(2); ?>
<?php $my_query = new WP_Query('posts_per_page=5');
$i = 1; 
$img = 1; 
while ($my_query->have_posts()) : $my_query->the_post();
$ma_description = get_post_meta(get_the_ID(), "description_rss", true);
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>

<?php if ($i) echo $ma_description; $i = 0; ?>
<img src="<?php if ($img) echo catch_that_image(get_the_ID());  $img = 0;  ?>" />

<?php endwhile; ?></ul>

<?php restore_current_blog() ?>

merci encore de ton aide, j'aimerai te déranger plus.


www.rabolo.com un petit pas sur la toile avec un annuaire généraliste

Hors ligne

 

Pied de page des forums

Propulsé par PunBB 1.2.23
© Copyright 2005-2006 WordPress France

[ Generated in 0.066 seconds, 27 queries executed ]