the_date () ne fonctionne pas

20

J'utilise wordpress 3.2 et j'ai fait un post de requête comme celui-ci:

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

Ensuite, j'essaie de faire écho à la date de ce post que j'ai interrogé comme ça.

<?php echo the_date(); ?>

Cela me donne le titre de l'article et 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 de très embarrassant.

Voici le code dans mon fichier 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é. Au fait, 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.

Par ailleurs, j'ai utilisé la fonction_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=<?php print get_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>
zachdyer
la source

Réponses:

51

Voir cette note spéciale sur l'utilisation de la `date_

REMARQUE SPÉCIALE: Lorsqu'il y a plusieurs articles sur une page publiée sous le MÊME JOUR, the_date () affiche uniquement la date du premier article (c'est-à-dire la première instance de the_date ()). Pour répéter la date des publications publiées le même jour, vous devez utiliser la balise de modèle the_time () ou get_the_date () (depuis 3.0) avec une chaîne de format spécifique à la date. Utilisez pour ajouter la date définie dans l'interface d'administration.

  1. Vous utilisez query_postsqui visse les globaux
  2. Vous faites écho à une fonction qui s'imprime déjà dans le navigateur

    • Vous faites cela pour toutes vos balises de modèle.
    • Changer echo the_date();pour:echo get_the_date('F j, Y');
    • Supprimez l'écho de vos balises de modèle qui s'impriment déjà dans le navigateur ou utilisez les fonctions alternatives qui renvoient la valeur.
  3. Utilisez un nouveau WP_Queryou get_postsau lieu dequery_posts

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

Chris_O
la source
1
get_the_date () a corrigé mon problème mais maintenant mon sidebar.php get_the_date () est cassé.
zachdyer
1
Une autre victime dequery_posts
Chris_O
D'accord, cela fonctionne maintenant, mais j'ai dû utiliser les balises d'écho. C'est pourquoi cela n'a pas fonctionné dans mon sidebar.php.
zachdyer
17

the_date()imprime la date uniquement si la même date n'a pas été imprimée auparavant .
Non, ce n'est pas compatible avec d'autres fonctions similaires. Mais c'est ainsi que cela fonctionnait dans l'ancêtre b2 / cafelog de WordPress , et la compatibilité descendante l' emporte toujours sur 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); ?>
fuxia
la source
NOOOOOOOOOOOOOOOOOOOO. Maintenant, ma barre latérale get_the_date est cassée. Que se passe-t-il là-bas?
zachdyer
1
Voir la réponse de Cris_O et ne l'utilisez pasquery_posts() . :)
fuxia
Votre utilisation de query_posts qui brise vos globaux. Voir ma réponse ci-dessous.
Chris_O
0

Je pense que cela doit être exécuté dans le while( have_posts() )conditionnel:

while ( have_posts() ) : the_post();
    echo '<li>';
    the_date();
    echo '</li>';
endwhile;
Kristian
la source
Comment puis-je simplement dire la date du message? C'est tout ce que je veux faire? Je n'ai posé qu'une seule question.
zachdyer
0

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

mor7ifer
la source
Non ça ne marche pas J'ai posté le code de ce que j'ai fait dans le post.
zachdyer
-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' );
avi
la source