欢迎光临
我们一直在努力

为你的WordPress主题框架建立起始文件

建站超值云服务器,限时71元/月

本文目录
[隐藏]

  • 1您需要做的是
  • 2为循环建立包含文件
  • 3主循环
  • 4页面循环
  • 5文章页循环
  • 6小结

本文是《开发你的 WordPress 主题框架》系列教程的第 3 部分,该系列共包含以下 10 个部分:

  1. WordPress 主题框架是如何工作的
  2. 决定如何开发你的WordPress主题框架
  3. 为你的WordPress主题框架建立起始文件
  4. 为你的WordPress主题框架添加动作挂钩
  5. 为你的WordPress主题框架添加函数
  6. 为你的WordPress主题框架添加过滤挂钩
  7. 为你的WordPress主题框架创建子主题
  8. 为你的WordPress主题框架开发插件
  9. 发布你的WordPress主题框架
  10. 为你的WordPress主题框架编写文档

在之前的课程中,您已经了解并学习了主题框架的工作方式和开发途径。

现在是时候深入探讨一些代码了!

在本教程中,您会采用一个基本的主题,然后编辑模板文件,为主题框架添加相关挂钩和函数做好准备。本教程旨在整理主题,减少代码重复,这意味着您要为循环建立包含文件(include files)。

您将不必在子主题中创建重复循环,当您创建新的模板文件时,或者您需要编辑循环时,您只需做一次就行了。

注:起始文件在我的系列课程《从静态HTML中创建一个WordPress主题》而创建的基础之上,稍作了些改动。您可以从GitHub库相关系列中去下载它们。

您需要做的是

跟随本教程,您需要

  • 安装一个WordPress开发环境
  • GitHub库相关系列中的起始文件或者起始主题文件
  • 一个代码编辑器

为循环建立包含文件

我会为我的框架建立三个循环:

  • 一个用于存档(包括主博客页面)
  • 一个用于单篇文章
  • 一个用于页面

这是因为我想让其中的每一个循环与其他的显示起来都略有不同。

尽管将会有三个循环,但相比较于每一个模板文件中都包含一个循环而言,这会更加高效。

主循环

主循环会用于存档和主博客页面。在您的主题文件夹中,创建一个名为loop.php的文件。

从archive.php中将下列代码复制到loop.php文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
/* Queue the first post, that way we know if this is a date archive so we can display the correct title.
 * We reset this later so we can run the loop properly with a call to rewind_posts().
 */
if ( have_posts() )
    the_post();
?>
 
        <h2 class="page-title">
            <?php if ( is_day() ) { ?>
                Archive for <?php echo get_the_date();
            }
            elseif ( is_month() ) { ?>
                Archive for <?php echo get_the_date('F Y');
            }
            elseif ( is_year() ) { ?>
                Archive for <?php echo get_the_date('Y');
            }
            else {
                echo get_queried_object()->name; 
            } ?>
        </h2>
 
<?php rewind_posts(); ?>
 
 
<?php // start the loop ?> 
<?php while ( have_posts() ) : the_post(); ?>
 
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
 
    <h2 class="entry-title">
        <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'compass' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark">
            <?php the_title(); ?>
        </a>
    </h2>
 
    <section class="left image quarter">
 
        <?php if ( has_post_thumbnail() ) { ?>
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail( 'medium', array(
                    'class' => 'left',
                    'alt'   => trim(strip_tags( $wp_postmeta->_wp_attachment_image_alt ))
                ) ); ?>
            </a>
        <?php } ?>
    </section><!-- .image -->
 
    <section class="entry-meta">
        <p>Posted on <?php the_date(); ?> by <?php the_author(); ?></p>
    </section><!-- .entry-meta -->
 
    <section class="entry-content">
        <?php the_content(); ?>
    </section><!-- .entry-content -->
 
    <section class="entry-meta">
        <?php if ( count( get_the_category() ) ) : ?>
            <span class="cat-links">
                Categories: <?php echo get_the_category_list( ', ' ); ?>
            </span>
        <?php endif; ?>   
    </section><!-- .entry-meta -->
 
</article><!-- #01-->
 
<?php endwhile; ?>
<?php // ends the loop ?>

<?php /* Queue the first post, that way we know if this is a date archive so we can display the correct title. * We reset this later so we can run the loop properly with a call to rewind_posts(). */ if ( have_posts() ) the_post(); ?> <h2 class=”page-title”> <?php if ( is_day() ) { ?> Archive for <?php echo get_the_date(); } elseif ( is_month() ) { ?> Archive for <?php echo get_the_date(‘F Y’); } elseif ( is_year() ) { ?> Archive for <?php echo get_the_date(‘Y’); } else { echo get_queried_object()->name; } ?> </h2> <?php rewind_posts(); ?> <?php // start the loop ?> <?php while ( have_posts() ) : the_post(); ?> <article id=”post-<?php the_ID(); ?>” <?php post_class(); ?>> <h2 class=”entry-title”> <a href=”<?php%20the_permalink();%20?>” title=”<?php printf( esc_attr__( ‘Permalink to %s’, ‘compass’ ), the_title_attribute( ‘echo=0’ ) ); ?>” rel=”bookmark”> <?php the_title(); ?> </a> </h2> <section class=”left image quarter”> <?php if ( has_post_thumbnail() ) { ?> <a href=”<?php%20the_permalink();%20?>”> <?php the_post_thumbnail( ‘medium’, array( ‘class’ => ‘left’, ‘alt’ => trim(strip_tags( $wp_postmeta->_wp_attachment_image_alt )) ) ); ?> </a> <?php } ?> </section><!– .image –> <section class=”entry-meta”> <p>Posted on <?php the_date(); ?> by <?php the_author(); ?></p> </section><!– .entry-meta –> <section class=”entry-content”> <?php the_content(); ?> </section><!– .entry-content –> <section class=”entry-meta”> <?php if ( count( get_the_category() ) ) : ?> <span class=”cat-links”> Categories: <?php echo get_the_category_list( ‘, ‘ ); ?> </span> <?php endif; ?> </section><!– .entry-meta –> </article><!– #01–> <?php endwhile; ?> <?php // ends the loop ?>

您并不需要去显示主博客页面上的标题,所以在第一个循环上添加一个条件标签,以检查我们是不是该网页上:

1
2
if ( ! is_front_page() ) {
}

if ( ! is_front_page() ) { }

第一个循环当前会如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if ( ! is_front_page() ) {
 
    if ( have_posts() )
        the_post();
    ?>
 
            <h2 class="page-title">
                <?php if ( is_day() ) { ?>
                    Archive for <?php echo get_the_date();
                }
                elseif ( is_month() ) { ?>
                    Archive for <?php echo get_the_date('F Y');
                }
                elseif ( is_year() ) { ?>
                    Archive for <?php echo get_the_date('Y');
                }
                else {
                    echo get_queried_object()->name; 
                } ?>
            </h2>
 
    <?php rewind_posts();
 
} ?>

if ( ! is_front_page() ) { if ( have_posts() ) the_post(); ?> <h2 class=”page-title”> <?php if ( is_day() ) { ?> Archive for <?php echo get_the_date(); } elseif ( is_month() ) { ?> Archive for <?php echo get_the_date(‘F Y’); } elseif ( is_year() ) { ?> Archive for <?php echo get_the_date(‘Y’); } else { echo get_queried_object()->name; } ?> </h2> <?php rewind_posts(); } ?>

现在,您需要在相关模板文件中包含这个循环。在archive.php和index.php文件中,将现有的循环替换为get_template_part()标签,其中包含了您的循环文件:

1
<?php get_template_part( 'loop' ); ?>

<?php get_template_part( ‘loop’ ); ?>

现在您有了一个用于存档的工作循环。

页面循环

接下来,您将为页面创建一个循环文件。创建一个名为loop-page.php的文件。

从现有的page.php文件中将下列循环代码复制到loop-page.php文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    // Run the page loop to output the page content.
 
     if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
 
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
 
            <?php if ( ! is_front_page() ) { ?>
                <h2 class="entry-title"><?php the_title(); ?></h2>
            <?php } ?>
 
            <section class="entry-content">
                <?php the_content(); ?>
            </section><!-- .entry-content -->
        </article><!-- #post-## -->
 
    <?php endwhile; ?>

<?php // Run the page loop to output the page content. if ( have_posts() ) while ( have_posts() ) : the_post(); ?> <article id=”post-<?php the_ID(); ?>” <?php post_class(); ?>> <?php if ( ! is_front_page() ) { ?> <h2 class=”entry-title”><?php the_title(); ?></h2> <?php } ?> <section class=”entry-content”> <?php the_content(); ?> </section><!– .entry-content –> </article><!– #post-## –> <?php endwhile; ?>

现在在主题的所有页面模板中(page.phppage-full-width.php),使用下面的代码替换循环:

1
<?php get_template_part( 'loop' , 'page' ); ?>

<?php get_template_part( ‘loop’ , ‘page’ ); ?>

文章页循环

最后,您将为单篇文章页面创建一个循环文件,用于普通的文章和您将来创建的任何自定义的文章类型。这和主循环是相似的,只是它不包括该文章的链接,也没有初始循环,用来检查我们的存档情况。

建立一个名为loop-single.php和另一个名为single.php的文件。

将index.php文件中的内容复制到single.php文件,并在文件的初始位置编辑说明和循环,如下所示:

1
<?php get_template_part( 'loop', 'single' ); ?>

<?php get_template_part( ‘loop’, ‘single’ ); ?>

现在,在single-loop.php文件中,复制代码到loop.php文件,不包括查询档案的第一个循环。在循环内编辑初始标题标签并取消链接,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php while ( have_posts() ) : the_post(); ?>
 
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
 
    <h2 class="entry-title">
        <?php the_title(); ?>
    </h2>
 
    <section class="left image quarter">
 
        <?php if ( has_post_thumbnail() ) { ?>
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail( 'medium', array(
                    'class' => 'left',
                    'alt'   => trim(strip_tags( $wp_postmeta->_wp_attachment_image_alt ))
                ) ); ?>
            </a>
        <?php } ?>
    </section><!-- .image -->
 
    <section class="entry-meta">
        <p>Posted on <?php the_date(); ?> by <?php the_author(); ?></p>
    </section><!-- .entry-meta -->
 
    <section class="entry-content">
        <?php the_content(); ?>
    </section><!-- .entry-content -->
 
    <section class="entry-meta">
        <?php if ( count( get_the_category() ) ) : ?>
            <span class="cat-links">
                Categories: <?php echo get_the_category_list( ', ' ); ?>
            </span>
        <?php endif; ?>   
    </section><!-- .entry-meta -->
 
</article><!-- #01-->
 
<?php endwhile 

<?php while ( have_posts() ) : the_post(); ?> <article id=”post-<?php the_ID(); ?>” <?php post_class(); ?>> <h2 class=”entry-title”> <?php the_title(); ?> </h2> <section class=”left image quarter”> <?php if ( has_post_thumbnail() ) { ?> <a href=”<?php%20the_permalink();%20?>”> <?php the_post_thumbnail( ‘medium’, array( ‘class’ => ‘left’, ‘alt’ => trim(strip_tags( $wp_postmeta->_wp_attachment_image_alt )) ) ); ?> </a> <?php } ?> </section><!– .image –> <section class=”entry-meta”> <p>Posted on <?php the_date(); ?> by <?php the_author(); ?></p> </section><!– .entry-meta –> <section class=”entry-content”> <?php the_content(); ?> </section><!– .entry-content –> <section class=”entry-meta”> <?php if ( count( get_the_category() ) ) : ?> <span class=”cat-links”> Categories: <?php echo get_the_category_list( ‘, ‘ ); ?> </span> <?php endif; ?> </section><!– .entry-meta –> </article><!– #01–> <?php endwhile; ?>

保存这两个文件。现在,所有的循环文件您都准备好了。

小结

  • 原文出自:http://code.tutsplus.com/tutorials/creating-the-starting-files-for-your-wordpress-theme-framework–cms-21662
  • 由  stonetan@WordPress大学 原创翻译,未经允许,禁止转载和采用本译文。

阅读该系列的其他文章: 上一篇:决定如何开发你的WordPress主题框架 下一篇:为你的WordPress主题框架添加动作挂钩

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 为你的WordPress主题框架建立起始文件
分享到: 更多 (0)