PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > CMS教程 > wordpress教程 > 正文

    wordpress主题开发教程

    作者:w634381967来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:【wordpress主题介绍】在详细分解代码之前,我们还是要先了解一下WP主题的大致情况。一个 WP 的主题是由几个 templates 文件组成的,每
    【wordpress主题介绍】

    在详细分解代码之前,我们还是要先了解一下WP主题的大致情况。一个 WP 的主题是由几个 templates 文件组成的,每一个主题必有的二个文件是:index.php 和 style.css(样式表),除此之外还有一些其它的文件(不是必须),它们和 index.php 文件间存在优先级关系,如果它们存在,WP 模板系统就会调用它们显示相应的页面,否则模板系统会调用 index.php 来显示。

    它们有可能是以下文件:

    single.php — 单一日志文件,用于显示单一日志
    page.php — 页面模板文件,用于显示静态页面
    archive.php — 存档文件,用于显示存档页面
    category.php — 类别文件,用于显示类别页面
    search.php — 搜索文件,用于显示搜索结果
    404.php — 错误文件,用于显示404页面
    comments.php — 评论文件,用于显示评论和评论框
    index.php
    首先制作index.php,我们知道在一个网页中,代码主要分为二部分,一个是页头信息,一个是页面内容。


     
    复制代码 代码如下:
    <html>
    <head>
    .........页头信息
    </head>
    <body>
    .........页面内容
    </body>
    </html>

    每个主题的页头信息都是几乎一样,具体可以查看默认模板的 header.php 文件(为保证所有页面的页头信息的一致性,所有页头信息都放在 header.php 文件。)

    接下来我们谈下一话题,关于母猪的产后护理……(我学的太杂了,都弄混了)

    我们来谈一下body中的内容。

    它包含四个部分,每一部分都可以叫做一个集成模块,其实一个主题就是由不同的模块构成,模块又是由不同的模块构成。

    header WP 的顶部,显示博客的名字与描述,放置导航栏,搜索栏等等。
    content WP 的正文部分,显示贴子的内容,作者,时间,分类,评论,编辑等等。
    sidebar WP 的侧边栏部分。
    footer WP 的尾部,这部分只有很少的内容,通常是版权信息。
    对于每一个集成模块中的内容,理论上是可以随意放置的,比如我们可以把header模块中的搜索栏放在sidebar模块中去。

    那如何区分这四个集成模块呢?看以下代码。


     
    复制代码 代码如下:
    <div id="header">
        这是我的博客
    </div>
    <div id="content">
        这是我的日志</div>
    <div id="sidebar">
        搜索栏,分类,存档,友情链接
    </div>
    <div id="footer">
        版权信息,我是二道
    </div>

    通过 div 标签,我们可以把这些模块分隔开来。

    header

    现在开始我们第一部分的代码块,不过在写代码之前我还得要啰嗦一句,写代码要有层次感,要记得缩进,不要用空格缩进而用TAB键。


     
    复制代码 代码如下:
    <div id="header">
        <h1><a href="<?php bloginfo('url');?>"><?php bloginfo('name');?></a></h1>
        <?php bloginfo('description');?>
    </div>

    id 是 div 的一个属性,给 id 赋于不同的值,这样就可以区分每一个div代码段。

    bloginfo() 是 WP 中定义好的函数,参数 url 返回网址,参数 name 返回网站的名字,参数 description 返回网站描述。

    在上面的代码中,就是为博客的标题并加上一个超链接,并且显示描述。

    如果我们把上面的三行代码加上页头部分另存为一个新的文件 — header.php。这样我们就可以通过以下 WP 函数导入它们。

    <?php get_header(); ?>
    这样的好处是,你只要修改一下header.php文件,所有调用这个文件的页面都会跟随改变,而不用一个一个地去修改了。

    content

    现在开始我们第二部分的代码块:


     
    复制代码 代码如下:
    <div id="content">
        <?php if(have_posts()) : ?>
            <?php while(have_posts()) : the_post(); ?>

            <?php endwhile; ?>
        <?php endif; ?>
    </div>

    这里使用 if(have_posts() 来检测是否有日志存在,如果有的话,就用 while 循环显示。the_post() 就是调用日志的函数。

    而每一篇日志又是有标题,有发布时间,有分属类别,有读者的评论,这些又全部需要用 div 标签来分隔开。看下面的代码:


     
    复制代码 代码如下:
    <div id="content">
        <?php if(have_posts()) : ?><!--开始检测-->
        <?php while(have_posts()) : the_post(); ?><!--以下面的格式显示每篇日志-->
            <div class="post">
                <h2><a href="<?php the_permalink();?>"><?php the_title();?></a></h2><!--含有链接地址的日志标题-->
                <div class="entry">
                    <?php the_content();?><!--日志内容-->
                    <p class="postmetadata"><!--日志元数据-->
                    <?php _e('Filed under:');?>
                    <?php the_category(',');?><!--调用日志的分类-->
                    <?php _e('by');?><!--使用_e()创建可翻译的主题-->
                    <?php the_autnor('');?><!--调用日志作者-->
                    <br />
                    <?php comments_poopup_link('No Comments»','1 Comments»','% Comment»');?><!--调用一个弹出的留言窗口,如果这个功能没有激活,则是显示留言列表-->
                    <?php edit_post_link('Edit','|','');?><!--只有在登陆后才可见到,对日志进行编辑的链接-->
                    </p>
                </div><!--日志内容结束-->
            </div><!--一篇日志彻底结束-->
        <?php endwhile; ?>
        <?php endif; ?>
    </div>

    class

    现在我们得要说说 class 了,它是与 id 都是标签的属性,但是不同之处在于,id 的参数值是唯一的,它在一个页面只能使用一次,而 class 的参数值是可以多次使用,
    比如 id=”header” 只能出现一次,因为我们只有一个地方可以出现博客的名字。而class=”entry” 会经常出现,那是因为我们的博客里不只是有一篇日志。

    为什么我们要用到 id 与 class,难道只用一个不行吗,反正功能都是相同的。不要忘了我们前面说过的一个重要文件,style.css 样式表文件。我们为某一段代码添加了属性,如同起个名字而已,这样在样式表中我们就可以为这些名字来定制它们的样式了。

    这样说你还不明白?那就打个最简单的比方吧,你可以有很多的兄弟,但是你们只能有一个爹,你不能用你爹的名字叫你的兄弟,但是你爹可以用你兄弟的名 字叫你。样式表文件就和你奶奶一样,你爹再牛逼也得听你奶奶的话,叫他怎么样他就得要怎么样。(老大你这个比喻寒啊,瀑布寒!!)

    Not Found

    前面的代码中有说到,如果检测到有日志的话,就用循环调出来,可是如果没有日志的话那要怎么样呢?


     
    复制代码 代码如下:
    <?php else:?>
    <div class="post" id="post-<?php the_ID(); ?>">
    <?php _e('Not Found');?>
    </div>

    把这一段代码加在 之后就可以了。

    页面导航

    当你的博客内容越来越多的时候,在 WP 的后台又设定了首页只显示10个日志,那么从第11个开始都无法在首页显示出来。

    这样在博客的最后一篇日志下面就会出现后一页或前一页的链接。如果你还不到10个日志,这个链接就不会出现。

    把下面的代码加入到 前面

    <div class="navigation">
    <?php posts_nav_link(); ?>
    </div>
    分析一下 posts_nav_link() 这个 WP 函数,它可以有三个参数:

    <? posts_nav_link('in between',’before',’after')
    ,第1个参数是显示在后一页和前一页链接的中间。第2个参数显示在后一页和前一页链接的前面。第3个参数显示在后一页和前一页链接的后面。用什么来显示,你自己决定,常用的就是一些符号或是箭头而已嘛。

    现在再看一下我们已经有了哪些个代码:


     
    复制代码 代码如下:
    <?php get_header(); ?>
    <div id="content">
        <?php if(have_posts()) : ?>
        <?php while(have_posts()) : the_post(); ?>
            <div class="post">
                <h2><a href="<?php the_permalink();?>"><?php the_title();?></a></h2>
                <div class="entry">
                    <?php the_content();?>
                    <p class="postmetadata">
                    <?php _e('Filed under:');?>
                    <?php the_category(',');?>
                    <?php _e('by');?>
                    <?php the_autnor('');?>
                    <br />
                    <?php comments_poopup_link('No Comments»','1 Comments»','% Comment»');?>
                    <?php edit_post_link('Edit','|','');?>
                    </p>
                </div>
            </div>
        <?php endwhile; ?>
        <div class="navigation">
            <?php posts_nav_link(); ?>
        </div>
        <?php else:?>
            <div class="post" id="post-<?php the_ID(); ?>" >
                <?php _e('Not Found');?>
            </div>
        <?php endif; ?>
    </div>
    </body>
    </html>

    侧边栏

    第三部分,关于侧边栏。侧边栏有一个特点,就是又臭又长,当然了这不是什么缠脚布。先不要乱扯。因为地形有限,所以侧边栏里的内容,多以列表的形式 排开。下面欢迎一对父子出场,他们的感情是相当的好,从来都是父子不分家,有父必有子,有子必有父,父中有子,子中有父。
    他们就是


     
    复制代码 代码如下:
    <ul> 和 <li>
    <div class="sidebar"><!--注意这里使用的不是id-->
        <ul>
            <li>
                <h2><?php _e('日志分类''); ?></h2>
            </li>
        </ul>
    </div>

    UL 表示无序列表,OL 表示列表元素。在侧边栏里,你要有几个不同的栏目,栏目的存在,就是为侧边栏进行了分类整理。每一个栏目又要有不同的分类列表,继续为上面的代码添加内容。

     
    复制代码 代码如下:
    <div class="sidebar">
        <ul>
            <li><h2><?php _e('日志分类'); ?></h2>
                    <ul>
                        <?php wp_list_cats ('sort_column=name&optioncount=1&hierarchical=0'); ?>
                    </ul>
            </li>
        </ul>
    </div>
    wp_list_cats() 函数为调用日志分类列表,它的参数也有三个。每个参数之间用&来分隔。
    sort_column=name — 把分类按字符顺序排列
    optioncount=1 — 显示在每个分类下面的日志数
    hierarchial=0 — 不把子分类放到子列表条目中


    说到分类,特别说一下静态页面这个栏目。我们在WP后台撰写的时候,有二个选择,一个是撰写日志,一个是撰写页面。对于日志,还可以选择保存在哪一 个具体的分类下面。对于页面就没得选择,只收录于页面栏目之下。 再回到前台,你可以看到每个分类都有显示日志的数目,而不显示标题。在页面栏目里,只排列了每一个页面的标题,而不显示数目。

    <?php wp_list_pages('depth=3&title_li="<h2>页面</h2>"'); ?>
    参数depht=3为可选参数,表示可以设定显示三级列表。

    注意一点,本教程的代码是制作模版的代码(PHP 代码),在WP中使用一个主题也就是等于在套用一个模版。在网站中查看源代码是看不到模版的代码的(已经被解释成 HTML 代码)。


     
    复制代码 代码如下:
    <li><h2><?php _e('日志分类'); ?</h2>
    <ul>
      <?php wp_list_cats ('sort_column=name&optioncount=1&hierarchical=0'); ?>
    </ul>
    </li>

    上面这一段模版代码,在网页中查看源代码,实际上显示的是这样的:

     
    复制代码 代码如下:
    <li><h2>文章存档</h2>
        <ul>
            <li><a href="#">与爱情有关的分类贴子</a></li>
            <li><a href="#">与生活有关的分类贴子</a></li>
            ...............................    </ul>
    </li>

    增加一个存档栏目:

     
    复制代码 代码如下:
    <li><h2><?php _e('文章存档'); ?></h2>
        <ul>
            <?php wp_get_archives('type=monthly'); ?>
        </ul>
    </li>

    wp_get_archives() 函数是用来获取文章存档的,参数’type=monthly’定义为以每个月的时间来进行分类存档

    增加一个友情链接栏目:

    <?php get_links_list(); ?>
    不用担心没有实际内容,它会自动调用在 WP 后台中添加的友情链接。

    增加一个搜索栏目:

    <li id="search">
    <?php include(TEMPLATEPATH. '/searchform.php'); ?>
    </li>
    这里使用 include() 函数调用一个文件,参数 TEMPLATEPATH 为主题文件夹路径,为了调用成功,你还需要有一个文件:searchform.php。

    增加一个日历栏目:


     
    复制代码 代码如下:
    <li id="calendar">
        <h2><?php _e('日历'); ?></h2>
        <?php get_calendar(); ?>
    </li>

    这里就不用多废话了。

    增加一个管理栏目:


     
    复制代码 代码如下:
    <li>
        <h2><?php _e('管理'); ?></h2>
        <ul>
            <?php wp_register(); ?>
            <li>
                <?php wp_loginout(); ?>
            </li>
            <?php wp_meta(); ?>
        </ul>
    </li>

    wp_loginout() 来确定你是否登陆,如果登陆就显示登出链接,如果没有登陆,就显示登陆的链接。
    wp_register() 来确定你的身份,如果没有登陆,就显示注册的链接,如果有的话,就显示管理的链接。
    而wp_meta() 却是什么也没有做。也不用去理它,还没有人来说明它是起什么作用的。实际上它是 WordPress 的hook。

    窗体化侧边栏

    <?php     /* Widgetized sidebar, if you have the plugin installed. */
    if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
    <pre>
    在侧边栏开始的地方第一个<ul>的后面,加上以上代码。也要在侧边栏结束的地方</ul>前面加上一句
    <pre>
    <?php endif; ?>
    从 WP2.0 开始,已经在后台集成了一个侧边栏的插件--Widget,它的功能就是可以很方便的在WP后台调整侧边栏中的内容,直接使用鼠标就可以移动每一个栏目的位置,而不需要去修改相应的代码。让每一个栏目都以窗体化存在。

    function_exists(‘dynamic_sidebar’) || !dynamic_sidebar()) 这两个参数来自于一个新的文件 — functions.php 我们需要创建这个文件才可以完成侧边栏的窗体化.。

    通过观察不同的WP主题,会发现在侧边栏中的内容远不止以上所列举的,
    要在学习中举一反三,才会制作出更加出众的主题。

    至此,侧边栏中的内容结束,我们也可以把第三部分的代码另存为一个新的文件 — sidebar.php,在index.php中填加一句代码就可以使用侧边栏

    <?php get_sidebar(); ?>
    顺便再增加一行代码:

    <?php get_footer();?>
    这是调用尾部文件 footer.php 的代码。我想你应该知道如何处理一个简单的 PHP 文件了,要么你就再重头学一次本教程。

    再一次查看一下index.php有了哪些代码


     
    复制代码 代码如下:
    <?php get_header(); ?>
    <div id="content">
        <?php if(have_posts()) : ?>
        <?php while(have_posts()) : the_post(); ?>
            <div class="post">
                <h2><a href="<?php the_permalink();?>"><?php the_title();?></a></h2>
                <div class="entry">
                    <?php the_content();?>
                    <p class="postmetadata">
                    <?php _e('Filed under:');?>
                    <?php the_category(',');?>
                    <?php _e('by');?>
                    <?php the_autnor('');?>
                    <br />
                    <?php comments_poopup_link('No Comments»','1 Comments»','% Comment»');?>
                    <?php edit_post_link('Edit','|','');?>
                    </p>
                </div>
            </div>
        <?php endwhile; ?>
        <div class="navigation">
            <?php posts_nav_link(); ?>
        </div>
        <?php else:?>
            <div class="post" id="post-<?php the_ID(); ?>" >
            <?php _e('Not Found');?>
            </div>
        <?php endif; ?>
    </div>
    <?php get_sidebar(); ?>
    <?php get_footer();?>

    index.php 文件的代码已经全在这里了,但是只有第二部分内容需要详细的代码,而其它的部分我们都可以调用外部文件,至此一个 WP 的主题构造已经搭建好,再一次提醒各位,检查代码,确认书写正确。只有不厌其烦地写代码才会对代码有更深刻的印像。

    其他文件

    下面开始创建其它文件

    将index.php的全部代码另存为archive.php,并且把 the_content 改成 the_excerpt,
    创建存档文件,它会显示在分类栏目下的每篇日志的摘要。

    将archive.php另存为 search.php,创建搜索文件,这样就可以在搜索中得到每篇文章的摘要。

    将 index.php 的全部代码另存为 page.php,创建页面模板文件,在

    <?php the_content(); ?>
    下面输入以下代码:

    <?php link_pages('<p><strong>Pages:</strong> ', '</p>', 'number'); ?>
    说明:如果一个页面,篇幅超长的话,我们可以把它截断分成几页来显示,

    <?php edit_post_link('Edit', '<p>', '</p>'); ?>
    说明:显示一个可以编辑的链接

    删除掉 <p class="postmetadata”> 至 </p> 这一块的代码
    删除掉以下代码:

    <div class="navigation">
    <?php posts_nav_link(); ?>
    </div>
    说明:对于静态页面,它没有属于哪个分类,我们也不希望被某人评论,当然它也不能显示与另一个页面间的连接,所在要去掉一部分代码。

    将index.php的全部代码另存为single.php,创建单篇文章文件,点击文章的标题,可以查看全文内容。在 下输入:

    <?php link_pages('<p><strong>Pages:</strong> ', '</p>', 'number'); ?>
    这段代码和上一例相同,都是可以用来截断文章。

    删除以下代码:

    <br />
    <?php comments_poopup_link('No Comments»','1 Comments»','% Comment»');?>


    <?php posts_nav_link(); ?>
    替换成

    <?php previous_post_link('« %link') ?> <?php next_post_link(' %link »') ?>
    说明:在单篇文章的下面显示的应是上一篇与下一篇的链接,而不是上一页与下一页的链接。

    如何处理留言评论?

    想一想,每一个留言评论都是对于一个文章而产生的,所以只要在单篇文章页面里添加一个调用评论的函数就可以。


     
    复制代码 代码如下:
    在 single.php 文件中 <div class="entry”> 代码块结束的 </div> 下面,输入以下代码:

    <div class="comments-template">
    <?php comments_template(); ?>
    </div>

    comments_template() 这个 WP 函数是用来从 comments.php 文件调用评论模板。所以我们还要创建一个 comments.php 文件。
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-103-1207-1.html
    相关热词搜索: wordpress主题开发