Voilà, mon problème :

Je souhaite réalisé grâce à jQuery et à WordPress : un calendrier permettant de récupérer les articles de façon dynamique.

Enfin, pour être clair : je clique sur un lien dans mon calendrier puis après ça ouvre une fenêtre pop-up qui me permettra de choisir entre les articles du jour en question.

Bon l'histoire du pop-up c'est simple puis après j'ai créé mon propre plug-ins WordPress pour calendrier qui assigne une id ayant la valeur du jour en question.

Et là est le problème :

Soit je récupère tous les articles de tous les jours puis je leurs assigne une div avec l'id du jour où ils ont été postés mais le problème est au niveau du temps de chargement (en gros ça fait 60 articles avec images en plus de tout le reste donc bon autant dire que ça va plomber le serveur pour pas grand-chose).

Soit je charge tout ça dynamiquement avec jQuery grâce à Json ou Ajax mais là je ne sais pas trop qu’elle méthode suivre.

Peut-être une url du genre :

http://site/#day-28 qui ouvrirais la fenêtre pop-up …

Donc si quelqu’un a une petite idée …
Merci.

Voila mon code jQuery (basé sur le tuto sur ZoomBox:

var calendar = {
    init : function(where){
        $(where+"table tbody tr td a").click(function(){
           calendar.load($(this).attr("title"));
           return false;
        });
    },

    load : function(title){
        date = title.split("/");
        calendar.redim();
        $("#box").show();
        $("#box .fond").effect('slide');
        $("#box .fond").animate({
            opacity: 0.5,
            backgroundColor: '#000000'
        }, 1500,function(){
        });
        $("#box .conteneur").show();
        $("#box .fond").click(function(){
           calendar.quit(); 
        });
    },

    quit : function(){
        $("#box").hide();
    },
    système de mise en page
}

2 réponses


Grafikart
Réponse acceptée

Alors je vais essayer de te suivre.

Tu bloque sur l'affichage de la liste, par exemple quand on clique sur le 14 Février tu aimerait afficher tous les articles du 14 Février. Ce que je te conseille c'est de passer le mois et l'année dans l'url de ta popup:
/page?m=14&y=2011
et ensuite de récupérer ça dans Wordpress et d'utiliser l'objet WP_QUERY pour récup les posts de cette date :

new WP_Query(array(
    'post_type' => 'post',
    'post_status' => 'publish',
    'year' => L'ANNEE,
    'month' => LE MOI
    ));

Merci de ta réponse.

C'est la méthode que j'ai utiliser ici(c'est un peu du n'importe quoi dans mes variables):

$today = getdate();

    $articles=array();
    $cal=array();

    $the_query = new WP_Query('posts_per_page=100&post_stype=post&post_status=publish&year='.$today"year"].'&monthnum='.$today"mon"].'&day='.$_GET'day'].');
    if($the_query->have_posts()) : while($the_query->have_posts()): $the_query->the_post();
    $day = get_the_time('j');
    $articles[get_the_ID()]=array(
        'title'=>get_the_title(),
        'excerpt'=>substr(get_the_excerpt(), 0, 150).' ...]',
        'permalink'=>get_permalink(),
        'image'=>wp_get_attachment_image_src(get_post_thumbnail_id(),'slider-thumb')
    );

    if(!isset($cal$day])){$cal$day]=array();}
    $cal$day][get_the_ID()]=$articles[get_the_ID()];

    endwhile;
    ?>
    <?php
    foreach($cal as $articles=>$post):
    ?>
    <div class="cal" id="day-<?php echo $articles; ?>">
    <ul>
        <?php
        foreach($post as $article=>$x):
            echo '<li><h3><a href="'.$x'permalink'].'">'.$x"title"].'</a></h3><div style="clear:both;"></div>';
            echo '<p>'.$x"excerpt"].'</p>';
            echo html::img($x'image'][0], 1);
            echo '<div style="clear:both;"></div></li>';
        endforeach;
        ?>
    </ul>
    </div>
    <?php
    endforeach;
    ?>
    <?php
    endif;
    wp_reset_query();

On pourrait encore le restreindre au jour sélectionner avec le $_GET mais pour les tests je préfère pouvoir basculer entre généré le tableau de tous les jours ou juste d'un jour précis.

L'avantage de ceci c'est que lorsque que je récupère ma page en ajax : il ne me récupère pas le head et tout ce dont je ne veux pas.

Mais le problème c'est que si quelqu'un se retrouve sur cette page il n’y a ni mise en page, ni menu par conséquent son utilité en n’est réduit.

Donc au final, je me dis que de garder la page archives de base est pas mal mais faudrait que je puisse récupérer en ajax juste l’élément qui m’intéresse.

Ou mettre en cache le résultat du code précédent au niveau du header… mais je ne sais pas si c’est possible sous WordPress.