WordPress主题制作全过程(七):制作sidebar.php
制作好了header.php 和 footer.php ,今天我们来制作侧边栏sidebar.php。由于侧边栏的可定制性实在是太强了,所以本节内容比较难,我讲解起来也比较困难,有些内容会被略掉!
作为各个页面公用的侧边栏,我们还是像制作header.php 和 footer.php那样,从index.php中提取侧边栏,放到sidebar.php。好,现在在你的主题目录Aurelius下新建文件sidebar.php,从index.php中提取一下代码,放到sidebar.php中:
<!-- Column 2 / Sidebar -->
<div class="grid_4">
<h3>Catagories</h3>
<ul class="sidebar">
<li><a href="">So who are we?</a></li>
<li><a href="">Philosophy</a></li>
<li><a href="">History</a></li>
<li><a href="">Jobs</a></li>
<li><a href="">Staff</a></li>
<li><a href="">Clients</a></li>
</ul>
<h3>Archives</h3>
<ul class="sidebar">
<li><a href="">January 2010</a></li>
<li><a href="">December 2009</a></li>
<li><a href="">Novemeber 2009</a></li>
<li><a href="">October 2009</a></li>
<li><a href="">September 2009</a></li>
<li><a href="">August 2009</a></li>
</ul>
</div>
<div class="hr grid_12 clearfix"> </div>
再用文本编辑器打开index.php、archive.php、page.php和single.php,删掉以上类似代码,改成:
<?php get_sidebar(); ?>
好,现在打开你的博客主页,看看我们制作的主题是否还可以正常工作。现在我们的侧边栏还都是静态的代码,大家可能都知道在WordPress后台 - 外观 - 小工具,那里可以拖动你想要的栏目到侧边栏,但是我们的主题目前还不支持这个功能。现在就让我一起来制作完整的sidebar。
为了适应WordPress程序,我们还要对sidebar.php做一些微调,下载新的样式表style.css,替换Aurelius目录下的style.css
开始sidebar.php的制作,我们将在侧边栏放置4个栏目。在初始状态下,也就是你没有在侧边栏放置任何小工具的情况下,这4个栏目自上而下为分类目录、最新文章、标签云和文章月存档。现在将sidebar.php中所有代码删除,改成:
<!-- Column 2 / Sidebar -->
<div class="grid_4">
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar('First_sidebar') ) : ?>
<h3>分类目录</h3>
<ul>
<?php wp_list_categories('depth=1&title_li=&orderby=id&show_count=0&hide_empty=1&child_of=0'); ?>
</ul>
<?php endif; ?>
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar('Second_sidebar') ) : ?>
<h3>最新文章</h3>
<ul>
<?php
$posts = get_posts('numberposts=6&orderby=post_date');
foreach($posts as $post) {
setup_postdata($post);
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
$post = $posts[0];
?>
</ul>
<?php endif; ?>
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar('Third_sidebar') ) : ?>
<h3>标签云</h3>
<p><?php wp_tag_cloud('smallest=8&largest=22'); ?></p>
<?php endif; ?>
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar('Fourth_sidebar') ) : ?>
<h3>文章存档</h3>
<ul>
<?php wp_get_archives('limit=10'); ?>
</ul>
<?php endif; ?>
</div>
<div class="hr grid_12 clearfix"> </div>
然后点此处下载functions.php放到主题目录Aurelius下,这时候你的侧边栏就可以正常工作了,在WordPress后台 - 外观 - 小工具,可以正常地拖动小工具到侧边栏了。
好了,sidebar.php到此就制作成功了。这节内容理论的东西讲得不多,关键是我不知道怎么去表述这些东西,就算我说出来,可能你也不会太明白了。关于sidebar.php制作的技术文档:可以参考:
最后还是按照惯例,提供经过本次修改后的主题文件下:
WordPress主题制作全过程完整列表:
- WordPress主题制作全过程(一):基础准备
- WordPress主题制作全过程(二):主题文件构成
- WordPress主题制作全过程(三):HTML静态模板制作
- WordPress主题制作全过程(四):小试牛刀
- WordPress主题制作全过程(五):制作header.php
- WordPress主题制作全过程(六):制作footer.php
- WordPress主题制作全过程(七):制作sidebar.php
- WordPress主题制作全过程(八):制作index.php
- WordPress主题制作全过程(九):制作single.php
- WordPress主题制作全过程(十):制作comments.php
- WordPress主题制作全过程(十一):制作page.php
-- 完 --
本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/create-wordpress-themes-sidebar.html
很好.看来要经常逛这里了.正在努力学习. 谢谢博主的文章.
sidebar-single.php和sidebar.php有什么区别和联系呢
@寻寻觅博客 <?php get_sidebar(); ?>
调取的是sidebar.php
<?php get_sidebar('single'); ?>
调取的是sidebar-single.php
@露兜 好吧 我还是有点不懂 太小白了我
@寻寻觅博客 刚会用织梦没三个月 公司就让用wordpress 做网站 头大
@那滋味 你们公司做什么的啊
唉,制作小工具的时候有点卡壳了。wp的语法知道的太少了。
我在网上看到的一个添加博客统计的小工具php代码,说放到主题根目录下,然后在functions.php引入该php地址就行了,虽然在小工具里看到了该博客统计的选项,但是添加上去,前台并不显示,这时需要添加什么才可以呢?目前知道的可能会是dynamic_sidebar()
望答复下,谢谢。
@晓庄 主页上显示一般在主题下的content.php(包含content的文件),文章的话single.php
这个侧边栏为什么要分个First_sidebar到Fouth_sidebar呢?而且是一个sidebar里面一个小工具,还是通过代码加进去,后台小工具里面不显示通过代码添加的小工具,而不是从后台拖进去的。如果只要一个sidebar并且全部小工具在后台拖进去怎么修改?
这个侧边栏在page页面好像没有类似的代码呢 那怎么改呢?
我想请教下 :
我的页脚,中文出现了乱码,是数据库设置的问题还是代码的问题。
@张大良 编码问题,换成utf-8
你的functions放上去很明显代码都错误了,Notice: register_sidebar的调用方法<strong>不正确</strong>。“First_sidebar”侧边栏的参数数组中未设置<code>id</code>,缺省为“sidebar-1”。要消除此通知并保持现有的侧边栏内容,请手动将<code>id</code>设置为“sidebar-1”。 请查阅<a href="https://codex.wordpress.org/Debugging_in_WordPress">调试WordPress</a>来获取更多信息。 (这个消息是在4.2.0版本添加的。) in F:\work\wordpress\wp-includes\functions.php on line 4137
@帝国 看起来,你在wp-config.php中将WP_DEBUG打开了,才会出现这样的提示。
但请注意这里是Notice,并不是Error
register_sidebar在缺省情况下会自动赋值一个id参数,所以不写这个参数并不存在错误,只是开了DEBUG后,后台顶部会有烦人的提示。
不过感谢你的提醒,目前这个functions.php中已经添加相应的参数。
最新文章 那块
给$posts赋值貌似会出问题
$posts =
我这发现的问题是single和page这两个包含了sidebar的页面 显示的文章始终是最近发布的那个post
找了好久才发现是这的问题
原因是我把sidebar调整到了左边 在代码里顺序也是在前面了
然后造成了$posts冲突 导致single和page总是显示最后那条post 而不是点选的那条post或page
改了下$posts名称就没问题了