[Résolu] Liste de permalinks avec thème Twenty Twenty-One (Créer un compte)

  • WordPress :5.5
  • Statut : résolu
14 sujets de 1 à 14 (sur un total de 14)
  • Auteur
    Messages
  • #2363820
    Rehve
    Participant
    Padawan WordPress
    58 contributions

    Bonjour,

    Ma configuration WP actuelle :
    – Version de WordPress : 5.6
    – Version de PHP/MySQL : 7.3.20 / 5.6.50
    – Thème utilisé : Twenty Twenty-One Child
    – Thème URI : https://wordpress.org/themes/twentytwentyone/
    – Extensions en place : Akismet Anti-Spam (4.1.7), Categories to Tags Converter Importer (0.5), Forum_wordpress_fr (4.2), Huge IT Image Gallery (10.0), TablePress (1.12), Visualizer: Tables and Charts for WordPress (3.4.10)
    – Adresse du site : https://rehve.fr
    – Nom de l’hébergeur : Apache

    Problème(s) rencontré(s) : je viens de passer du thème Twenty Seventeen Child à Twenty Twenty-One Child et j’ai une difficulté pour reproduire une présentation spécifique de ma catégorie 32 (kronic-concerts) qui était sous forme de liste de permalinks de titres des posts par ordre alpabétique. Dans 2017 j’avais créé un fichier à partir du template page.php pour ce faire mais quand je réécris le même code sur un fichier template page.php sous 2021 placé dans mon thème Child cela n’est pas satisfaisant. Il me classe bien les post par ordre alphabétique des titres de posts mais je n’arrive pas à les présenter en permalink.

    La première partie du code fontionne bien :

    /* Start the Loop */
    query_posts('cat=32&showposts=-1&orderby=title&order=ASC');
    while ( have_posts() ) :
    	the_post();
    	get_template_part( 'template-parts/content/content-page' );
    Classement par ordre alpha des titres

    Dès que je rajoute le code ci-desous juste après le précédent pour obtenir la présentation en permalinks cela bloque tout :

    <li>
    <a href="<?php the_permalink(); ?>" rel="bookmark" title="Permalink to <?php the_title(); ?>"><?php the_title(); ?></a>
    </li>
    Code bloquant

    Pourriez-vous m’aider ?

    #2363822
    mathieu42
    Participant
    Maître WordPress
    691 contributions

    je n’ai pas compris, à part le changement de l’ordre d’affichage avec “query_posts”, quelles autres modifications voulez vous faire ?

    #2363828
    Rehve
    Participant
    Padawan WordPress
    58 contributions

    Bonjour,

    Merci de votre réponse.

    Je cherche à afficher uniquement une liste des permalinks et non pas les posts en intégralité. C’est la raison pour laquelle j’ai inclus la deuxième partie du code qui fonctionnait parfaitement sous Twenty Seventeen.

    #2363829
    mathieu42
    Participant
    Maître WordPress
    691 contributions

    ah je comprends mieux, vous pouvez essayez le code suivant que j’ai fait en me basant sur les fichiers du thème :

    <?php
    
    // fichier basé sur index.php
    
    get_header();
    
    
    query_posts('cat=32&showposts=-1&orderby=title&order=ASC');
    
    
    if ( have_posts() ) {
    
    	// Load posts loop.
    	while ( have_posts() ) {
    		the_post();
    
    		?>
    			<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    				
    				<header class="entry-header">
    					<?php
    						the_title( sprintf( '<h2 class="entry-title default-max-width"><a href="%s">', esc_url( get_permalink() ) ), '</a></h2>' );
    						//twenty_twenty_one_post_thumbnail();
    					?>
    				</header><!-- .entry-header -->
    				
    			</article><!-- #post-${ID} -->
    			
    		<?php
    		
    	}
    
    	// Previous/next page navigation.
    	twenty_twenty_one_the_posts_navigation();
    
    } else {
    
    	// If no content, include the "No posts found" template.
    	get_template_part( 'template-parts/content/content-none' );
    
    }
    
    get_footer();

    #2363832
    Rehve
    Participant
    Padawan WordPress
    58 contributions

    Je viens de créer un fichier ‘index.php’ (est-ce bien ce bine ainsi qu’il faut le nommer ?) classé dans mon dossier enfant et y ai inséré votre code, mais cela semble sans effet :

    https://rehve.fr/category/art/musique/kronic-concerts/

    Mes posts s’affichent intégralement et sont maintenant de nouveau classés par ordre chronologique.

    #2363833
    mathieu42
    Participant
    Maître WordPress
    691 contributions

    le fichier “index.php” s’occupe des pages qui n’ont pas de template spécifique.

    dans votre cas, vous devez l’appeler “category-32.php” pour que ce fichier s’occupe uniquement de cette catégorie.

    #2363836
    Rehve
    Participant
    Padawan WordPress
    58 contributions

    Ca marche : https://rehve.fr/category/art/musique/kronic-concerts/.

    Je vais essayer de comprendre pourquoi votre version fonctionne et pas la mienne, pas sûr que j’y arive… 🙁

    Encore une question, j’ai essayé de modifier la taille des polices des titres, mais la encore sans succès. J’ai pourtant ajouté dans mon fichier css enfant ce que je croyais être ces dimensions, mais quand je les modifie dans le css cela ne change rien à la présentation sur le site…

    /* Variables */
    :root {
    
    	/* Font Family */
    	--global--font-primary: var(--font-headings, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif);
    	--global--font-secondary: var(--font-base, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif);
    
    	/* Font Size */
    	--global--font-size-base: 1.25rem;
    	--global--font-size-xs: 1rem;
    	--global--font-size-sm: 1.125rem;
    	--global--font-size-md: 1.25rem;
    	--global--font-size-lg: 1.5rem;
    	--global--font-size-xl: 3.25rem;
    	--global--font-size-xxl: 4rem;
    	--global--font-size-xxxl: 2rem;
    	--global--font-size-page-title: var(--global--font-size-xxl);
    	--global--letter-spacing: normal;

    Grand merci.

    #2363837
    mathieu42
    Participant
    Maître WordPress
    691 contributions

    pour la question de l’affichage avec le code CSS, il vaut mieux que vous créez une nouvelle discussion puisque c’est une nouvelle question.

    en ce qui concerne ce que vous avez essayez, montrez nous le code complet.

     

    #2363849
    ferman
    Participant
    Maître WordPress
    4125 contributions

    Bonjour,

    Je vais essayer de comprendre pourquoi votre version fonctionne et pas la mienne, pas sûr que j’y arive…

    Je pense que vous avez fait simplement une  erreur (oublier de fermer une balise php avant li par exemple). Votre code fonctionne correctement  chez moi (avec twenty-twentyone).

    #2363884
    Rehve
    Participant
    Padawan WordPress
    58 contributions

    Bonjour Ferman,

    Le code fourni par Mathieu42 fonctionne mais je suis quand même intrigué par votre question. Je me permets donc de revenir vers vous.

    J’ai remarqué que le fichier index.php du thème Twenty Twenty-One comporte en ligne 1 une balise d’ouverture ‘<?php’ mais aucune balise de fermeture ‘?>’ dans la suite du fichier. Cela m’a semblé bizarre mais ça fonctionne ainsi. Je me suis dit que cela devait être un changement de WP ??? Qu’en pensez vous ?

    J’ai gardé le code de Mathieu42 pour ma catégorie 32 mais ai essayé de revenir à mon code initial pour ma catégorie 33 puisque vous m’avez dit qu’il fonctionnait chez vous. Cela ne marche toujours pas chez moi, même après que j’aie essayé  d’introduire des balises de fermeture ‘?>’

    <?php
    /**
     * The main template file used for category33/Kronic musique
     *
     * This is the most generic template file in a WordPress theme
     * and one of the two required files for a theme (the other being style.css).
     * It is used to display a page when nothing more specific matches a query.
     * E.g., it puts together the home page when no home.php file exists.
     *
     * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
     *
     * @package WordPress
     * @subpackage Twenty_Twenty_One
     * @since 1.0.0
     */
    
    get_header();
    
    if ( have_posts() ) {
    
    	// Load posts loop.
    	query_posts('cat=33&showposts=-1&orderby=title&order=ASC');
    	while ( have_posts() ) {
    		the_post();
    
    <li>
    <a href="<?php the_permalink(); ?>" rel="bookmark" title="Permalink to <?php the_title(); ?>"><?php the_title(); ?></a>
    </li>		
    
    	}
    
    	// Previous/next page navigation.
    	twenty_twenty_one_the_posts_navigation();
    
    } else {
    
    	// If no content, include the "No posts found" template.
    	get_template_part( 'template-parts/content/content-none' );
    
    }
    
    get_footer();
    Code de fonctionnant pas pour Catégorie 33

    Si vous avez quelques minutes je serai intéressé par votre revue du code ci-dessus.

    Grand merci.

    #2363886
    mathieu42
    Participant
    Maître WordPress
    691 contributions

    pour la balise de fin de fichier, c’est PHP qui la rend facultative et c’est même recommandé de ne pas la mettre parce que sinon cela envoi des espaces ou des sauts de lignes à la fin du fichier ce qui peut bloquer l’envoi d’entêtes HTTP.

    en ce qui concerne votre code, le souci se trouve à la ligne “the_post()” qui est du code PHP. juste après vous voulez afficher du code HTML, il faut donc mettre une balise PHP fermante entre les 2.

    #2363889
    Rehve
    Participant
    Padawan WordPress
    58 contributions

    OK, j’ai compris.

    Merci de votre aide.

    #2363896
    ferman
    Participant
    Maître WordPress
    4125 contributions

    il faut donc mettre une balise PHP fermante entre les 2.

    C’était donc bien la raison (je m’en doutais). Essayez en mettant la balise fermante mais pour moi il fallait en plus mettre “endwhile” et la partie” get_template” est inutile.  Ci dessous votre code tel qu’il fonctionne chez moi.

    function rehve(){
    	if (is_page("page-test3"))
    		query_posts('cat=5&showposts=-1&orderby=title&order=ASC');
    	while ( have_posts() ) :
    		the_post();	
    ?>
    	<li>
    		<a href="<?php the_permalink(); ?>" rel="bookmark" title="Permalink to <?php the_title(); ?>"><?php the_title(); ?></a>
    	</li>
    <?php
    	endwhile;
    }
    add_shortcode ('shortcode3a','rehve');

    Je ne sais pas ce que pense @mathieu42 (c’est lui le développeur) de  l’utilisation de “Query_posts”. Cela marche bien mais je vois souvent que ce n’est pas recommandé.

     

    • Cette réponse a été modifiée le il y a 5 mois et 3 semaines par ferman.
    #2363901
    mathieu42
    Participant
    Maître WordPress
    691 contributions

    je suis surtout développeur d’extensions et je crois que la fonction “query_posts” a plus d’utilité dans le développement de thème.

    dans les extensions (comme par exemple pour ce shortcode), j’ai plus l’habitude d’utiliser la fonction “get_posts”

    https://developer.wordpress.org/reference/functions/get_posts/

14 sujets de 1 à 14 (sur un total de 14)
  • Vous devez être connecté pour répondre à ce sujet.