web-dev-qa-db-fra.com

Thème Wordpress personnalisé: date de publication et date d'affichage pour les publications l'une à côté de l'autre

Ce qui se passe actuellement, c’est que pour les publications qui ont une heure de "mise à jour", les dates de publication et de publication originales sont affichées côte à côte (sans informations supplémentaires entre les deux, ni même un espace), et je ne suis pas tout à fait sûr où je devrais chercher à résoudre ce problème. J'ai besoin de conseils concernant les fichiers dans lesquels rechercher ce code de sortie ou, si possible, une autre manière d'ajouter un mot ou deux. entre les deux dates. Le thème est basé sur _S - ce qui explique pourquoi je ne sais pas où se trouve la page souhaitée et que ce problème persiste dans les zones du thème où vous pouvez voir les dates (blog, résultats de recherche, publications elles-mêmes).

Je pourrais cacher l'une des dates avec CSS - mais je voudrais certainement afficher la date de mise à jour la plus récente, ce qui me laisserait le dilemme de créer des CSS complexes et inutiles pour masquer des dates qui pourraient être traitées beaucoup mieux. (Je songe donc à ne pas définir l'affichage des liens: l'affichage de last-child est défini sur true, mais la compatibilité du navigateur serait compromise, et cela ne me semble pas très professionnel).

Demo Of Problem

1
Adam

Un merci spécial à RachieVee pour avoir lancé le mouvement avec leur commentaire.

J'ai compris comment faire cela, alors j'ai pensé que je pourrais aussi bien le documenter pour référence future par d'autres. Sur une note de côté, cela concerne uniquement le thème _ S , ou tout thème basé sur ce modèle de départ.

Très bien, il faut environ 5 minutes pour réparer cette "double date" - après avoir vérifié le fichier content.php , j'ai trouvé <?php my_underscores_theme_name_posted_on(); ?> où la méta-sortie était pour la date et l'heure. Après avoir creusé un peu, je suis tombé sur le fichier my_underscores_theme_name.pot - et sur les lignes 257 à 260, les informations suivantes ont été écrites:

#: inc/template-tags.php:82
msgctxt "post date"
msgid "Posted on %s"
msgstr ""

J'en ai déduit que c'était ce dont j'avais besoin, mais c'était encore trop limitant. Je suis donc allé dans le fichier php référencé (inc/template-tags.php) à la ligne 82, et l’a modifié pour ressembler à ceci (pour votre cas, remplacez league_of_legends_rift par le nom de votre thème.):

if ( ! function_exists( 'league_of_legends_rift_posted_on' ) ) :
/**
 * Prints HTML with meta information for the current post-date/time and author.
 */
function league_of_legends_rift_posted_on() {
    $time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time>';
    $time_string = $time_string;
    if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
        $time_string2 = ', last updated on ';
        $time_string2 .= '<time class="updated" datetime="%1$s">%2$s</time>';
    }

    $time_string = sprintf( $time_string,
        esc_attr( get_the_date( 'c' ) ),
        esc_html( get_the_date() )
    );
    $time_string2 = sprintf( $time_string2,
        esc_attr( get_the_modified_date( 'c' ) ),
        esc_html( get_the_modified_date() )
    );

    $posted_on = sprintf(
        _x( 'Posted on %s', 'post date', 'league-of-legends-rift' ),
        '<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>'.$time_string2
    );

    $byline = sprintf(
        _x( 'by %s', 'post author', 'league-of-legends-rift' ),
        '<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . esc_html( get_the_author() ) . '</a></span>'
    );

    echo '<span class="posted-on">' . $posted_on . '</span><span class="byline"> ' . $byline . '</span>';

}
endif;

Cela semblait un peu différent auparavant, beaucoup plus condensé avec une variable ($ time_string) à laquelle votre date de publication initiale et votre date de mise à jour seraient ajoutées l'une à l'autre. J'ai utilisé la logique déjà présente et introduit une seconde variable, $ time_string2, que j'ai utilisée pour stocker la phrase et les informations relatives à la date de mise à jour. Ensuite, j'ai modifié le $ posted_on pour inclure cette nouvelle variable et la mise en forme que je voulais - mais, pour éditer cette sortie ajoutée, vous devez maintenant le faire à partir de ce fichier php, plutôt que du fichier ".pot" que j'ai référencé plus tôt. .

J'espère que cela vous a aidé autant que cela m'a aidé!

1
Adam