自定义Template Tags

Template TagsWordpress 系统中非常重要的内容,用于在Template(模板)中方便地进行引用,以便生成指定的内容或提供关于系统的有关信息。模板标签由三部分组成:

  • PHP代码标识,即< ?php ... ?>
  • WordPress自定义函数,如 wp_list_cats (显示分类列表)
  • 相应函数的可选参数。
  • 因此,一个模板标签完整表现形式为: < ?php bloginfo('name'); ?> (显示此Blog的名字)

    注:

  • 模板在这里指的是各不同主题下的模板文件,点开你的Wordpress下的/wp-content/themes/目录,你会看到一个个的主题目录,其下的一个个php文件,就是用于生成相应页面内容的”模板”了。
  • 定义模板标签的文件主要集中在wp-includes目录下。
  • 这里主要是对模板标签进行简单的介绍,至于内容比较多,全部详细地写出来着实不是一时半会儿的事,况且Wordpress官方有专门的帮助文档,所以,就不赘述了。只是会再下一步将主要的标签的功能再简单地进行一下说明,以方便大家使用和去深入地了解。

    模板标签分为四类,其中三类是比较特殊的:即Include Tags、Conditional Tags、The Loop Tags。下面都做一下介绍吧。

    Include Tags - 模板引用标签。用于在一个模板文件中引用(执行)另一个模板文件中的内容。比如,在某一主题下的index.php模板中,加入< ?php get_sidebar(); ?> 这段代码,即可方便地生成显示在前台的侧边栏(Sidebar)。模板引用标签作为Wordpress的自定义函数,其源代码主要放置在: /wp-includes/template-functions-general.php ,有兴趣的同志,可以进行更详细的阅读。

    Sample:

    <?php
    < ?
    php
        
    get_header();
        
    if (have_posts()) :
            
    while (have_posts()) :
                
    the_post();
                
    the_content();
            
    endwhile;
        
    endif;
        
    get_sidebar();
        
    get_footer();
    ?>

    Conditional Tags - 条件标签。当你在Wordpress的环境中不断地”运动”时,条件标签可以用于向你”报告”当前的各种状况,以便选择合适的操作。条件标签返回的值只有两种情况:TRUE(是,真)或FALSE(否,假)。需要注意的一点就是,在不同的情况下,可用的条件标签是不同的。

    这里也举一个简单的例子: 如在侧边栏的模板文件中(一般是sidebar.php)加入条件标签is_home()后,那么,当首页被显示时,系统将返回一个TRUE值,反之,则返回FALSE。然后,你可以根据返回的值,决定侧边栏要显示什么内容。如: < ?php if (is_home()) { ?> 代码 < ?php } ?>

    条件标签的源代码主要在: /wp-includes/functions.php

    The Loop标签 - The Loop是Wordpress中的一个专门的术语,指的那些用于生成在前台显示的文章内容的活动,它们代表着Wordpress的主要工作内容之一。整个Loop由html、php代码,以及模板标签来实现。凡是标注了必须在The Loop 中显示的标签,都可以称之为Loop类模板标签,简称Loop标签。关于这类标签的详细的说明和定义,可以点这里看官方给出的参考。

    Loop sample:

    /*开始Loop的代码
    询问系统是否有文章存在[if (have_posts())]
    如果有,则开始进行一个显示文章的循环[while (have_posts()]
    一篇篇地显示文章[the_post()]*/

    < ?
    php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    /* 结束Loop的代码 ,直到显示完毕*/
    < ?php endwhile; else: ?>
    /*如果没有文章,报错*/
    <p>< ?php _e('Sorry, no posts matched your criteria.'); ?></p>
    /* 结束整个Loop*/
    < ?php endif; ?>
    ?>

    除了上述三类比较特殊的模板标签,还有一些普遍适用的模板标签。

    Leave a comment

    Please be polite and on topic. Your e-mail will never be published.