[Wordpress] importer le contenu d'un article dans une <div>

Salut,

je suis en train de développer un site avec wordress et je suis confronté à un probleme :

La page d’acceuil de mon site est composée de 4 gros “boutons” :

COLLECTION
PROJECTS

NEWS
INFO

Lorsque l’on clic sur l’un de ces boutons des liens apparaissent en dessous de celui-ci.
Ces liens sont importés grace à ce bou de code :

[CODE]

<?php $args=array( 'post_type' => 'post', 'post_status' => 'publish', 'cat' => '3', 'caller_get_posts'=> 1 ); $my_query = null; $my_query = new WP_Query($args); if( $my_query->have_posts() ) { echo ''; while ($my_query->have_posts()) : $my_query->the_post(); ?>
 <li><a href="#" onclick="envoieRequete('<?php the_permalink(); ?>','displaybloc');" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
 <?php
 endwhile;

}
[/CODE]

Les liens de catégories 3 seulement sont chargés.

En gros, si on clic sur COLLECTION on à ca :

COLLECTION
a/w 2013
s/s 2012
PROJECTS
NEWS
INFO

ensuite, lorsque l’on clic sur les liens, par exemple “a/w 2013” je voudrais que le contenu de l’article “a/w2013” soit charger dans une div en dessous du lien.

J’arrive à charger toute la page de l’article grace à une fonction javascript :

[CODE]

[/CODE]

que j’appel ensuite grace dans ma fonction qui charge mes liens (a/w2013 a/s2012) :
[HTML]

<?php get_header(); ?>
<?php $args=array( 'post_type' => 'post', 'post_status' => 'publish', 'cat' => '3', 'caller_get_posts'=> 1 ); $my_query = null; $my_query = new WP_Query($args); if( $my_query->have_posts() ) { echo ''; while ($my_query->have_posts()) : $my_query->the_post(); ?>
  • <?php the_title(); ?>
  • <?php endwhile; } wp_reset_query(); // restaure les données écrasées par the_post(). ?>
    [/HTML]

    Le probleme est que avec cette technique, wordpress me charge TOUTE la page apres le liens. Il réimporte le logo, les commentaire et compagnie. J’aimerai ne charger QUE le contenu de l’article, sans le superflu de la page. Je sais que l’on peut charger le contenu d’un article en utilisant la fonction wordpress : the_content(); mais je ne vois pas bien comment utiliser cette fonction dans le cas présent car envoieRequete() ne prends en compte que des lien HTML.

    Quelqu’un aurait une idée ?

    Si ca peut vous aider il y a un prototype du site ici : http://www.julieschroer.com/ .
    C’est un prototype fait sur cargocollective à la vas vite. j’essai de faire une version propre sur wordpress.
    L’arboressance sera la meme.

    Si les articles que tu affiches en AJAX ne sont pas affichés ailleurs, une solution simple (mais pas forcément très propre mais bon) serait de créer un un template dédié aux articles qui doivent s’afficher (ajouter -ou modifier- le fichier single.php dans ton répertoire de ton thème courant).

    Dans ce template tu charge uniquement ton article (sans les header, footer et autres sidebar).

    plus d’infos sur les templates (modèles) : http://codex.wordpre…chie_de_modeles

    Ainsi, le the_permalink() ne pointera plus vers une page contenant l’habillage du site et l’article mais uniquement l’article.

    Bon par contre c’est un peu (beaucoup) dégueu comme méthode, c’est juste un workaround pour faire rapidement ce que veux faire dans le cas présent.

    Un truc plus sympa serais quand même un bout de plugin qui te renvois l’article demandé en Ajax sans passer par un template.

    Ou alors, à mi-chemin entre les 2, faire en sorte que ton template single.php sache si c’est une requête AJAX qui le demande et servir tout, ou seulement l’article en fonction de. Ce que serait (un peu) moins caca :).

    Sinon par simplte curiosité, pourquoi tu utilises pas une lib genre jQuery pour faire tes requêtes AJAX?

    Edit : ortho

    merci pour ces conseils KAD. La méthode « caca » me parait plutot réalisable, je vais la tenter.

    J’avai essayé de passer par jquery pour faire mes requetes AJAX mais il ne se passait absolument rien lors du chargement de <?php the_permalink(); ?> . Je suis pas très (pas du tout) callé en jquery, j’ai surement du faire une mauvaise manip donc je me suis rabattut sur une autre méthode.

    Ca simplifirai la chose de passer par jQuery ?

    Je viens d’officialiser la méthode « caca ».

    J’ai édité single.php en suppriment/modifiant le code afin d’obtenir :

    <div id="primary">
    <div id="content" role="main">
    <?php while ( have_posts() ) : the_post(); ?>
    	 </nav><!-- #nav-single -->
    	
    	 <?php the_content(); ?>
    <?php endwhile; // end of the loop. ?>
    </div><!-- #content -->
    </div><!-- #primary -->

    Ca marche niquel donc je pense que je vais m’y tenir :slight_smile:

    Merci, tu m’as enlevé une épine du pied ! :biggrin: