以前在augmentum的时候CMS做得比较多的是drupal和joomla,wordpress基本没做过。到我自己做blog,也只是和一般用户一样使用wordpress本身的功能,没有进行wordpress编程。比较遗憾,哈哈。

今天解决的问题是:wordpress的tag cloud,是不会显示所有的tags的。其实也不应该显示所有的tags,因为在边栏里,你显示所有的tags的话,势必让页面变得非常难看。而我们有的时候又希望查找一些文章比较少的tag,这个时候就很麻烦了。我今天创建了一个页面,来显示所有的tags。

首先我们需要了解,在文章或者页面里显示出所有的tags,需要编写一点PHP代码。而普通用户是不能直接在文章里编写代码的,那么我们有两个选择,第一是使用第三方的插件,比如:Exec-PHP,当然还有其他很多,大家有兴趣可以自己查下;第二个方法比较复杂,就是创建一个模板,然后在模板里写入我们希望的代码,然后在页面上应用这个模板,就OK了。这里我比较推荐第二种方法,因为在你用wordpress的过程中,其实并不是有很多情况是需要使用代码的,而装插件是个永久的事情,装了,然后这个插件会一直显示,比较臃肿。而且从安全的角度来说,这种功能不存在也更安全。好,这里我们就介绍下第二种方法。

首先我们需要创建一个tamplate,如何创建呢,这个需要我们打开文本文件编辑器,将下面的代码贴到编辑器里,并命名这个文件为:template-alltags.php,然后把这个文件上传到你当前启用的theme的文件夹下。

[codesyntax lang="php"]

<?php
/**
 * Template Name: All Tags
 *
 * A custom page template with all tags displayed.
 *
 * @package WordPress
 */
get_header(); ?>

<div id="alltags" class="post type-post status-publish format-standard hentry category-entertainment tag-acg tag-entertainment tag-game clearfix post nodate">
<div style="margin-left: 15px;">
    <?php
    /**
     * Display all tags.
     */
    $args = array (
        'number' => 0,
        'format' => 'list',
    );
    wp_tag_cloud($args);
    ?>
</div>
</div>

<?php get_footer(); ?>

[/codesyntax]

最上面那段注释很重要,特别是Template Name: All Tags这句。只有这句话存在,theme才会把这个文件作为template处理,你在创建页面的时候才能看得到这个template。这里我们使用了wp_tag_cloud这个函数,并给它参数number为0,表示显示所有tags;参数format为list,表示tag cloud是以列表样式显示。而包住这个函数的两个div则是页面样式显示的需要,根据不同的theme读者可以自行调整来符合自己的theme的样式。

OK,接下来我们进入控制台,选择页面 》新建页面,在标题栏上填写“标签页”,内容部分则完全不用填。就完成啦。

大家可以打自己的blog首页看新添加出来的链接。