web-dev-qa-db-fra.com

Changer le comportement de la balise <! - more ->

Lorsque je clique sur "En savoir plus" au bas de l'un des messages de mon site Web, il charge simplement le reste du texte de la même page et de la même section, ce qui fait déborder d'éléments de texte et de gâcher ma mise en page. J'ai remarqué qu'il y a une balise à la fin de chaque publication Wordpress lorsque Read More est ajouté à partir de la barre d'outils. Comment remplacer le comportement par défaut de cette balise afin qu'une nouvelle page soit ouverte lorsqu'un utilisateur clique sur "Lire la suite ..." pour une publication?
Mettre à jour:
J'ai utilisé le code suivant pour personnaliser davantage le lien. Cependant, il ouvre une nouvelle instance de la même page lorsque l'utilisateur clique dessus, avec tous les articles déballés (je veux dire, tous les articles abandonnent leur lien et affichent tout leur contenu, donnant ainsi un aspect désordonné à ma page.
Ce que je veux, c’est juste une nouvelle page entièrement vierge (sans être affecté par mon thème, même) où le texte complet du message demandé est affiché.

<?php

            add_filter( 'the_content_more_link', 'modify_read_more_link' );
            function modify_read_more_link() {
            return '<a class="more-link" target="_blank" href="' . get_permalink() . '">ادامه...</a>';
            }
            ?>
            <?php
            $cat_id=get_cat_ID('تازه ترین اخبار');
                $posts = get_posts ("cat=$cat_id&posts_per_page=1");
                if ($posts) 
            {
            foreach ($posts as $post):
                setup_postdata($post); ?>
                <h2><?php the_title(); ?></h2>
                <?php the_content();?>
                <?php endforeach;
            }
                ?>

Mise à jour :

Following the comments, I created a single.php with the following code:<br/>
<?php

get_header(); ?>

    <div id="primary" class="content-area">
        <div id="content" class="site-content" role="main">
            <?php
                // Start the Loop.
                while ( have_posts() ) : the_post();


                    get_template_part( 'content', get_post_format() );



                    if ( comments_open() || get_comments_number() ) {
                        comments_template();
                    }
                endwhile;
            ?>
        </div><!-- #content -->
    </div><!-- #primary -->

<?php


get_footer();
?>

Cependant, seul l'en-tête de mon site est affiché dans une nouvelle page, une fois que je clique sur "lire plus" sur la page principale, avec un formulaire d'envoi de commentaires. Donc, le message lui-même n'est pas affiché. J'ai lu quelque part que je pourrais simplement copier et coller le contenu d'un thème prêt, Wordpress ferait le reste pour moi. J'ai coupé plusieurs pièces, en raison d'erreurs de remontée, et le code ci-dessus est laissé avec le résultat mentionné.
Est-ce que quelqu'un sait ce que je devrais ajouter ou modifier au single.php pour que chaque message soit entièrement affiché dessus avec mon design arbitraire? Merci d'avance enter image description here

1
codezombie

Il semble que cela pose un problème dans la configuration de votre thème, puisque ce que vous décrivez n'est pas le comportement habituel de la balise more. La première partie de votre message suggère que votre thème comporte du code JavaScript intégré, ce qui a pour effet d'élargir le texte du message plutôt que de vous diriger vers la page du message, ce qui supprime le fait que JS devrait le résoudre sans aucun filtre personnalisé.

Je vérifierais également que votre thème contient en fait un modèle single.php. La dernière partie de votre message suggère que ce n'est peut-être pas le cas, mais cela pourrait aussi être simplement causé par le JS du thème.

1
Shellbot

Ce stackoverflow post m'a aidé. J'ai ajouté un seul php avec le code suivant qui a fonctionné pour moi:

<?php

get_header(); ?>

    <div id="primary" class="content-area">
        <div id="content" class="site-content" role="main">         
        <?php while ( have_posts() ) : the_post(); ?>
        <h3><?php the_category('&nbsp;&rsaquo;&nbsp;'); echo "&nbsp;&rsaquo;&nbsp;"; the_title(); ?></h3>
        <?php the_content(); ?>
        <?php endwhile; // end of the loop. ?>
        </div><!-- #content -->
    </div><!-- #primary -->

<?php


get_footer();
?>

Merci les gars pour les réponses quand même.

0
codezombie

C'est peut-être parce que vous avez laissé le champ extrait en blanc. Si vous avez des textes (normalement un résumé de chaque message) dessus, ils seront affichés sur la page au lieu du contenu complet. Essayez-le.

Pour en savoir plus sur la personnalisation par défaut, lisez plus de liens ici

0
Hakkim