WordPress主题制作全过程(七):制作sidebar.php

日期: 标签:WordPress教程主题制作
如需帮忙改代码,或者WordPress二次开发、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主题制作全过程完整列表:

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/create-wordpress-themes-sidebar.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

62 条留言

点此留言
1 2 78
  1. samcao

    很好.看来要经常逛这里了.正在努力学习. 谢谢博主的文章.

  2. 寻寻觅博客 寻寻觅博客

    sidebar-single.php和sidebar.php有什么区别和联系呢

    • 露兜

      @寻寻觅博客 <?php get_sidebar(); ?>
      调取的是sidebar.php

      <?php get_sidebar('single'); ?>
      调取的是sidebar-single.php

      • 寻寻觅博客 寻寻觅博客

        @露兜 好吧 我还是有点不懂 太小白了我

        • 那滋味

          @寻寻觅博客 刚会用织梦没三个月 公司就让用wordpress 做网站 头大

          • 寻寻觅博客

            @那滋味 你们公司做什么的啊

  3. 晓庄 晓庄

    唉,制作小工具的时候有点卡壳了。wp的语法知道的太少了。
    我在网上看到的一个添加博客统计的小工具php代码,说放到主题根目录下,然后在functions.php引入该php地址就行了,虽然在小工具里看到了该博客统计的选项,但是添加上去,前台并不显示,这时需要添加什么才可以呢?目前知道的可能会是dynamic_sidebar()
    望答复下,谢谢。

    • 天空之城 天空之城

      @晓庄 主页上显示一般在主题下的content.php(包含content的文件),文章的话single.php

  4. Obago

    这个侧边栏为什么要分个First_sidebar到Fouth_sidebar呢?而且是一个sidebar里面一个小工具,还是通过代码加进去,后台小工具里面不显示通过代码添加的小工具,而不是从后台拖进去的。如果只要一个sidebar并且全部小工具在后台拖进去怎么修改?

  5. joy joy

    这个侧边栏在page页面好像没有类似的代码呢 那怎么改呢?

  6. 张大良

    我想请教下 :

    我的页脚,中文出现了乱码,是数据库设置的问题还是代码的问题。

    • 天空之城 天空之城

      @张大良 编码问题,换成utf-8

  7. 帝国

    你的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中已经添加相应的参数。

  8. aze

    最新文章 那块
    给$posts赋值貌似会出问题
    $posts =

    我这发现的问题是single和page这两个包含了sidebar的页面 显示的文章始终是最近发布的那个post
    找了好久才发现是这的问题
    原因是我把sidebar调整到了左边 在代码里顺序也是在前面了

    然后造成了$posts冲突 导致single和page总是显示最后那条post 而不是点选的那条post或page

    改了下$posts名称就没问题了

1 2

发表留言