WordPress首页内页显示不同侧边栏内容

2012年3月18日
分享到:
发表评论 阅读评论

想要实现WordPress首页内页显示不同侧边栏内容,并不一定要用WP的插件,简单的几行代码就可以实现,最主要的是使用代码不会增加主机资源的过多占用。

首先要说明的是, 以下操作目前只能通过修改 sidebar.php 或相关代码达到目的. 下面我们来个例子吧, 假如现在的 Widget 结构如下:

<div class="widget xxx_widget">
	<h3>Widget Title</h3>
	<ul>
		<li>Item 1</li>
		<li>Item 2</li>
		<li>Item 3</li>
	</ul>
</div>

如果我们要在首页显示 Archives, 单篇文章显示 Categories, 其他页面显示 Meta, 则需要改动代码如下:

<?php if (is_home()) : ?>
	<div>
		<h3>Archives</h3>
		<ul>
			<?php wp_get_archives(); ?>
		</ul>
	</div>
<?php else if (is_single()) : ?>
	<div>
		<h3>Categories</h3>
		<ul>
			<?php wp_list_cats(); ?>
		</ul>
	</div>
<?php else : ?>
	<div>
		<h3>Meta</h3>
		<ul>
			<?php wp_register(); ?>
			<li><?php wp_loginout(); ?></li>
		</ul>
	</div>
<?php endif; ?>

其实关键在 is_home() 和 is_single() 方法的调用,,通过 if 语句限制显示条件.。你可以将它们换成其他限制条件,,以达到不页面的不同地方显示不同内容的目的,,而不仅仅是侧边栏.。如果是在主页和页面就是这样的:<?php if (is_home() || is_page() ) : ?>,page后的()里填上页面的ID,就可以只在特定页面显示。同样的道理适用于Archive 页面,只要这个你弄懂了,其他的就小菜一碟了。

创建新的sidebar文件,调整函数调用

实现不同页面调用不同侧边栏的想法很简单:注册一个新的侧边栏 sidebar2.php,然后在需要调用 sidebar2 的页面代替原来的 sidebar。

步骤:

1、注册一个新的侧边栏 sidebar2。

在主题文件夹下的 function.php 中找到类似以下代码:

if ( function_exists(‘register_sidebar’) )
register_sidebar(array(
‘before_widget’ => ‘<div class=”widget”>’,
‘after_widget’ => ‘</div>’,
‘before_title’ => ‘<h3>’,
‘after_title’ => ‘</h3>’,
));

然后以相同的格式再注册添加一个 sidebar2。例如:

if ( function_exists(‘register_sidebar’) )

register_sidebar(array(

‘name’ => ‘sidebar2′,

‘before_widget’ => ‘<div class=”widget”>’,

‘after_widget’ => ‘</div>’,

‘before_title’ => ‘<h3>’,

‘after_title’ => ‘</h3>’,

));

2、新建 sidebar2.php 调用新注册的 sidebar2。

在 sidebar.php 中找到以下代码:

<div class=”sidebar”>

<?php include_once(“tab.php”); ?>

<?php if ( function_exists(‘dynamic_sidebar’) && dynamic_sidebar() ) :else : ?>

<?php endif; ?>

</div>

然后以相同的格式新建 sidebar2.php 文件调用 sidebar2。例如:

<div class=”sidebar”>
<?php include_once(“tab.php”); ?>
<?php if ( function_exists(‘dynamic_sidebar’) &&dynamic_sidebar(sidebar2) ) : else : ?>
<?php endif; ?>
</div>

3、最后,在需要的页面调用 sidebar2.php 文件。

这里以 page.php 为例调用 sidebar2.php。在 page.php 中找到如下代码:

<?php get_sidebar(); ?>

修改为:

<?php include_once(“sidebar2.php”); ?>

如果以上操作步骤都正确的话,会在小工具里多一个名为 sidebar2 的 Widget,你可以拖动添加你所需要的 Widget,如果你想要更多不同的侧边栏,还可以用相同的方法注册 sidebar3、sidebar4……

以上内容根据网上资源整理,分享给大家使用,我想这个应该不算是Google最近准备要扫荡的过度优化之列吧!

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: WordPress首页内页显示不同侧边栏内容

  1. 冠朔wordpress插件 | #1
    2012年4月17日08:04

    这么麻烦,还是用插件算了。

    [回复]

    SiteFans 回复:

    其实是代码比较简单,还能减轻主机负担!

    [回复]

  2. Andrew | #2
    2012年3月25日07:04

    挺实用的

    [回复]

  1. 本文目前尚无任何 trackbacks 和 pingbacks.