Vous n'êtes pas identifié.
Annonce
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
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
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
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
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
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
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
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; ?>&w=221&h=100&zc=1&q=100&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
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
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