zoukankan      html  css  js  c++  java
  • WordPress 主题开发

    The Search Template and The Page Template are vital to any complete WordPress Theme. And they’re both really easy to code.
    For both of these Templates, we’ll start with our template-template,single.php, again. As a refresher, here’s single.php.

    <?php
    /**
    * The Template for displaying all single posts.
    *
    * @package Shape
    * @since Shape 1.0
    */
    get_header ();
    ?>
    <div id="primary" class="content-area">
        <div id="content" class="site-content" role="main">
    <?php while ( have_posts() ) : the_post(); ?>
    <?php shape_content_nav( 'nav-above' ); ?>
    <?php get_template_part( 'content', 'single' ); ?>
    <?php shape_content_nav( 'nav-below' ); ?>
    <?php
        // If comments are open or we have at least one comment, load up the comment
        // template
        if (comments_open () || '0' != get_comments_number ())
            comments_template ( '', true );
        ?>
    <?php endwhile; // end of the loop. ?>
    </div>
        <!-- #content .site-content -->
    </div>
    <!-- #primary .content-area -->
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>

    But, of course, each one is going to take its own path.

    The Search Template

    In search.php we’re going to wrap our loop inside an IF statement—in case we don’t have any posts to loop through.

    Here’s how it’ll work: IF we have posts, or, in other words, if there are posts that match the terms we’re searching for, THEN loop through them, sorta just like in index.php, but IF we don’t have posts to loop through, or, if there aren’t any posts that match our search terms, give our searchers another chance at this searching business.

    In code, it would look like this:

    <?php
    /**
    * The template for displaying Search Results pages.
    *
    * @package Shape
    * @since Shape 1.0
    */
    get_header(); ?>
    <section id="primary" class="content-area">
    <div id="content" class="site-content" role="main">
    <?php if ( have_posts() ) : ?>
    <header class="page-header">
    <h1 class="page-title">
    <?php printf( __( 'Search Results for: %s', 'shape' ), '<span>' . get_search_query() . '</span>' ); ?></h1> </header><!-- .page-header --> <?php shape_content_nav( 'nav-above' ); ?> <?php /* Start the Loop */ ?> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', 'search' ); ?> <?php endwhile; ?> <?php shape_content_nav( 'nav-below' ); ?> <?php else : ?> <?php get_template_part( 'no-results', 'search' ); ?> <?php endif; ?> </div><!-- #content .site-content --> </section><!-- #primary .content-area --> <?php get_sidebar(); ?> <?php get_footer(); ?>

    Pretty straightforward, right? Let’s cover a few areas in the code.

    First, take a look at everything between if ( have_posts() ) :(line 14) and shape_content_nav( 'nav-below' );. If there are search results, this is the markup that controls how the search results page will look. We’ll get a nice title at the top that includes the search term, followed by a listing of the posts returned in the search.

    Also, shape_content_nav() works the same way here as it does inindex.php.

    You’ll remember get_template_part() from earlier lessons. It’s loading the file containing the actual markup for the posts returned in the search. It’ll first look for a file called “content-search.php”, but since we are not creating that file, it’ll use content.php instead. If you wanted to format your search results posts differently (just like we did for Aside posts), feel free to create a “content-search.php” file and go wild!

    Next, let’s look at the code between else : (line 31) and endif; (line 35). If there are no search results to display, we want to let our visitor know, nicely. To do that, we load the same no-results.php file that we created in the index.php lesson. It sure feels great when we can resuse code without needing to actually paste it into each file.

    The Search Form Template
    Back in WordPress Theme Template & Directory Structure, we addedsearchform.php. If you want to customize the markup of your theme’s search form, this is the file you’d use to make that happen. Otherwise, searchform.php is optional. If your theme doesn’t have asearchform.php, then WordPress displays the search form with its own built-in markup.

    Here’s the code to paste into searchform.php.

    <?php
    /**
    * The template for displaying search forms in Shape
    *
    * @package Shape
    * @since Shape 1.0
    */
    ?>
    <form method="get" id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>" role="search">
    <label for="s" class="assistive-text"><?php _e( 'Search', 'shape' ); ?></label>
    <input type="text" class="field" name="s" value="<?php echo esc_attr( get_search_query() ); ?>" 
    id="s" placeholder="<?php esc_attr_e( 'Search &hellip;', 'shape' ); ?>" /> <input type="submit" class="submit" name="submit" id="searchsubmit" value="<?php esc_attr_e( 'Search', 'shape' ); ?>" /> </form>

    The Page Template

    You know what the Page Template is for. WordPress thinks of it as a post out of chronological order. We think of it as, well a page. But largely, it’s defined by what it doesn’t have: all of the usual metadata (such as navigation, timestamps, categories, and tags) included a blog post.

    Our Page template file will look very much like single.php. We will also place the contents of the Page loop inside content-page.php.

    First, let’s set up the Page template. Open page.php and add the following code.

    <?php
    /**
    * The template for displaying all pages.
    *
    * This is the template that displays all pages by default.
    * Please note that this is the WordPress construct of pages
    * and that other 'pages' on your WordPress site will use a
    * different template.
    *
    * @package Shape
    * @since Shape 1.0
    */
    get_header(); ?>
    <div id="primary" class="content-area">
    <div id="content" class="site-content" role="main">
    <?php while ( have_posts() ) : the_post(); ?>
    <?php get_template_part( 'content', 'page' ); ?>
    <?php comments_template( '', true ); ?>
    <?php endwhile; // end of the loop. ?>
    </div><!-- #content .site-content -->
    </div><!-- #primary .content-area -->
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>

    Now, let’s place the markup for the actual Page inside content-page.php. Paste the following into content-page.php.

    <?php
    /**
    * The template used for displaying page content in page.php
    *
    * @package Shape
    * @since Shape 1.0
    */
    ?>
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <header class="entry-header">
    <h1 class="entry-title"><?php the_title(); ?></h1>
    </header><!-- .entry-header -->
    <div class="entry-content">
    <?php the_content(); ?>
    <?php wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'shape' ), 'after' => '</div>' ) ); ?>
    <?php edit_post_link( __( 'Edit', 'shape' ), '<span class="edit-link">', '</span>' ); ?>
    </div><!-- .entry-content -->
    </article><!-- #post-<?php the_ID(); ?> -->

    It’s a stripped-down version of content-single.php. We’ve omitted all of the metadata that’s associated with posts.

    And with that, you’re done with this lesson. Enjoy your new Page and Search templates.

  • 相关阅读:
    PHP编程资源
    JSP+Java编程资源
    Word、Excel办公书的资源下载
    听你说
    一些好看的渐变色(配色)网站推荐
    js判断数组中是否包含某个元素
    你才是你故事的作者
    vue-color 颜色选择器插件用法介绍
    vue-cli3 导入.md文件,vue中markdown文件的解析与渲染
    新版 animate.css 在vue中的正确使用
  • 原文地址:https://www.cnblogs.com/songix/p/3388252.html
Copyright © 2011-2022 走看看