the_date () ne fonctionne pas

17

J'utilise wordpress 3.2 et j'ai rédigé un message de requête comme suit:

<?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>

Ensuite, je tente de faire écho à la date de ce message que je posais comme ceci.

<?php echo the_date(); ?>

Cela me donne le titre du message, l’extrait et le permalien, mais pas de date. A ton avis, quel est le problème. Je suis sûr que c'est quelque chose d'assez embarrassant.

Voici le code de mon fichier de modèle pour la page vidéo:

    <?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
    <h2>Recent Video</h2>
    <h3 class="date"><?php echo the_date(); ?></h3>
    <p><strong><?php echo the_title(); ?></strong><?php echo the_excerpt(); ?></p>
    <p><a href="<?php echo the_permalink(); ?>" class="more2">Watch Now</a></p>

Ici, j'essaie de mettre la requête en boucle:

<?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2>Recent Video</h2>
<h3 class="date"><?php echo the_date(); ?></h3>
<p><strong><?php echo the_title(); ?></strong><?php echo the_excerpt(); ?></p>
<p><a href="<?php echo the_permalink(); ?>" class="more2">Watch Now</a></p>
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

the_date () n'a pas fonctionné, mais the_title () et d'autres fonctions ont fonctionné. En passant, cela a changé ma requête en the_post (), ce qui n'est pas ce que je veux. Je souhaite interroger la dernière vidéo comme je l'ai fait au-dessus de la boucle.

En passant, j’ai utilisé la fonction the_date plus tôt dans la page et cela a fonctionné. Est-ce que cela pourrait être le problème? Voici avant le code que j'ai eu un problème.

    

<div id="col75" class="firstcol">
    <iframe id="video" src="http://www.youtube.com/embed/videoseries?list=<?phpprintget_post_meta($post->ID,"playlist_id", true); ?>" width='560' height='350' frameborder="0"></iframe>
    <div id="col25">
        <h2><?php echo get_post_meta($post->ID,"speaker", true); ?></h2>
        <h3 class="date"><?php echo the_date(); ?></h3>
    
posée zachdyer 17.05.2012 - 23:07

5 réponses

46

Voir cette remarque spéciale sur l'utilisation de 'the_date'

  

REMARQUE SPÉCIALE: lorsque plusieurs publications sur une page sont publiées sous   le SAME DAY, the_date () n'affiche que la date du premier post   (c’est-à-dire la première instance de the_date ()). Répéter la date pour   messages publiés sous le même jour, vous devez utiliser la balise de modèle   the_time () ou get_the_date () (depuis 3.0) avec un format spécifique à la date   chaîne. Utilisez pour ajouter le   date définie dans l'interface d'administration.

  1. Votre utilisation de query_posts qui bousille les globals
  2. Votre écho d'une fonction qui imprime déjà sur le navigateur

    • Ce que vous faites en réalité pour toutes vos balises de modèle.
    • Remplacez echo the_date(); par: echo get_the_date('F j, Y');
    • Supprimez l'écho de vos balises de modèle déjà imprimées sur le navigateur ou utilisez les fonctions alternatives qui renvoient la valeur.
  3. Utilisez un nouveau WP_Query ou get_posts au lieu de query_posts

  4. Lisez le Codex. Il vous explique comment utiliser toutes ces fonctions et est très utile:)

réponse donnée Chris_O 17.05.2012 - 23:47
14

the_date() imprime la date uniquement si la même date n'a pas été imprimée avant .
Non, ce n'est pas compatible avec d'autres fonctions similaires. Mais c’est comment cela a fonctionné dans l'ancêtre b2 / cafelog de WordPress , et la compatibilité ascendante dépasse toujours la logique …:)

Pour imprimer la date, utilisez toujours get_the_date()

<?php echo get_the_date(); ?>

ou

<?php echo mysql2date( get_option( 'date_format' ), $post->post_date); ?>
    
réponse donnée fuxia 17.05.2012 - 23:31
0

Je pense que cela est censé être exécuté dans la condition while( have_posts() ) :

while ( have_posts() ) : the_post();
    echo '<li>';
    the_date();
    echo '</li>';
endwhile;
    
réponse donnée Kristian 17.05.2012 - 23:09
0

Vous devez initialiser la boucle pour que certaines fonctions fonctionnent. Toutes ces fonctions indiquent sur leur page de codex qu'elles ne fonctionneront pas correctement en dehors de la boucle.

    
réponse donnée mor7ifer 17.05.2012 - 23:21
-1
// This won't show date in all cases
the_date( 'F d, Y' );

// This will show date in all cases
the_time( 'F d, Y' );
    
réponse donnée avi 24.06.2016 - 11:54

Lire d'autres questions sur les étiquettes