wake-up-neo.com

benutzerdefinierte Suchergebnisseite

was ich getan habe,

ich erstelle eine search.php

<?php get_header(); ?>
<div class="wapper">
  <div class="contentarea clearfix">
    <div class="content">
      <h1 class="search-title"> <?php echo $wp_query->found_posts; ?>
        <?php _e( 'Search Results Found For', 'locale' ); ?>: "<?php the_search_query(); ?>" </h1>
      <ul>
        <?php query_posts('showposts=3'); if (have_posts()) : ?>
        <li>
          <h3><a href="<?php echo get_permalink(); ?>">
            <?php the_title();  ?>
            </a></h3>
          <?php  the_post_thumbnail('medium') ?>
          <?php echo substr(get_the_excerpt(), 0,200); ?>
          <div class="h-readmore"> <a href="<?php the_permalink(); ?>">Read More</a></div>
        </li>
        <?php endif ?>
      </ul>
    </div>
  </div>
</div>
<?php get_footer(); ?>

dann erstelle eine searchform.php

<form action="<?php bloginfo('siteurl'); ?>" id="searchform" method="get">
  <input type="search" id="searchbox" name="s" placeholder="Enter keywords" required>
    <input type="image" id="searchsubmit" alt="Search" class="searchicon" src="<?php bloginfo( 'template_url' ); ?>/images/icon-search.gif" />
</form>

aber meine Ergebnisseite zeigt keine Inhaltsbeschreibung und auch nur ein Ergebnis. aber auf Titel H1 zeigt es 2/3/5/6/7 usw. Anzahl Suchergebnis gefunden. ich möchte mindestens 10 ergebnisse und dann eine seite anzeigen und auch 200/300 zeichen inhaltstext für das suchergebnis anzeigen. Jungs können mir helfen. Ich bin noch kein Experte wp

2
pagol001

Ich habe einige Empfehlungen für Ihre Frage:

First : Verwenden Sie query_posts() nicht mehr. Lesen Sie den Codex zu dieser Funktion , um zu erfahren, warum Sie ihn nicht in Designs oder Plugins verwenden sollten. Auf jeden Fall sollten Sie query_posts() nach der Schleife ausführen, wenn Sie sich in einer seltsamen Situation befinden, in der Sie keine Option haben und wp_reset_query() verwenden müssen. Sie müssen wissen, dass Sie den global $wp_query verwenden, der die ursprüngliche Abfrage von WordPress enthält, und dann query_post, der die global $wp_query-Variable ändert, was zu unerwarteten Ergebnissen führt. Darüber hinaus verwenden Sie einen veralteten Parameter showposts, der durch posts_per_page ersetzt wird.

Zweitens : Sie können eine benutzerdefinierte Suchvorlage (search.php) verwenden, um das Erscheinungsbild anzupassen. Erstellen Sie einfach eine search.php-Datei in Ihrem Theme-Ordner und passen Sie sie nach Ihren Wünschen an. Hier keine benutzerdefinierten Abfragen machen ; Wenn Sie das tun, erstellen Sie eine neue Abfrage für Beiträge und verschwenden die Abfrage, die bereits von WordPress durchgeführt wurde. Eine Verschwendung von Ressourcen mit negativen Auswirkungen auf die Leistung.

Drittens : Um die von WordPress verwendeten Standard-Abfrageparameter wie die Anzahl der Beiträge pro Seite usw. zu ändern, können Sie pre_get_posts action verwenden.

Erstellen Sie also Ihre search.php-Vorlage nach Ihren Wünschen und teilen Sie WordPress mit pre_get_posts mit, welche Parameter Sie in der Suchabfrage verwenden möchten:

Das search.php Template könnte ungefähr so ​​aussehen:

<?php
get_header();
global $wp_query;
?>
<div class="wapper">
  <div class="contentarea clearfix">
    <div class="content">
      <h1 class="search-title"> <?php echo $wp_query->found_posts; ?>
        <?php _e( 'Search Results Found For', 'locale' ); ?>: "<?php the_search_query(); ?>" </h1>

        <?php if ( have_posts() ) { ?>

            <ul>

            <?php while ( have_posts() ) { the_post(); ?>

               <li>
                 <h3><a href="<?php echo get_permalink(); ?>">
                   <?php the_title();  ?>
                 </a></h3>
                 <?php  the_post_thumbnail('medium') ?>
                 <?php echo substr(get_the_excerpt(), 0,200); ?>
                 <div class="h-readmore"> <a href="<?php the_permalink(); ?>">Read More</a></div>
               </li>

            <?php } ?>

            </ul>

           <?php echo paginate_links(); ?>

        <?php } ?>

    </div>
  </div>
</div>
<?php get_footer(); ?>

Und die pre_get_posts Aktion sieht ungefähr so ​​aus:

add_action( 'pre_get_posts', function( $query ) {

    // Check that it is the query we want to change: front-end search query
    if( $query->is_main_query() && ! is_admin() && $query->is_search() ) {

        // Change the query parameters
        $query->set( 'posts_per_page', 3 );

    }

} );
7
cybmeta

Sie müssen die Schleife starten und Ihre search.php ändern, ähnlich wie der folgende Code

  <?php get_header();?>

    <div class="wapper">
      <div class="contentarea clearfix">
        <div class="content">
            <ul>
                <?php if ( have_posts() ) : ?>

            <header class="page-header">
                <p><?php printf( __( 'Search Results for: %s', 'twentyfourteen' ), get_search_query() ); ?></p>
            </header><!-- .page-header -->

                        <?php
                        // Start the Loop.
                        while ( have_posts() ) : the_post();
                        ?>
                        <li><h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3></li>
                        <?php the_post_thumbnail('medium') ?>
                        <?php echo substr(get_the_excerpt(), 0, 200); ?>
                            <div class="h-readmore"> 
                                <a href="<?php the_permalink(); ?>">Read More</a>
                            </div>
                        <?php
                        endwhile;
                else :
                // If no content, include the "No posts found" template.
                get_template_part( 'content', 'none' );
                endif;
                ?>       
            </ul>                                 

        </div>
      </div>
    </div>
<?php get_footer(); ?>
0
shuvroMithun