首页 » 建站技术 » WordPress » 浏览内容

让你的主题支持 WordPress 3.1 文章格式功能


2010-12-28 13:08:51 4,008 1 发表评论 字体: 作者:C.K.
标签: WordPress

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

在主题中添加支持文章格式并不太复杂。想想你要是用什么文件格式,然后在添加一个函数到你的主题函数文件(functions.php)中即可。WordPress 3.1 到目前为止,支持的文章格式有9种:无题(aside),链接(link),相册(gallery),图片(image),聊天(chat),音频(audio),视频(vedio),状态(status),引用(quote)。如果你想要支持所有的文章格式,或者其中的几个,只要按照如下格式添加即可:

add_theme_support( 'post-formats', array( 'aside', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video', 'audio', 'quote') );

上面列出了9种格式,但实际上还有第10种,也就是默认的文章格式,这是所有文章格式的基础。

将上述代码添加到主题函数文件(functions.php)之后,我们再来看看WordPress 3.1的文章编辑器(控制台,撰写新文章):

现在,你的主题已经支持以上所有9种文章格式了。你可以在撰写文章的时候,设置一篇文章的格式。不过还有一个问题,现在文章格式有了,但是你的主题还不支持显示这种格式呢。下面是一个WordPress文章格式的简化模板。我们对模板进行了简化——只有很少的标记和内容,以便于你理解主要内容。自定义文章格式的显示模板,主要有两点要做:

内容:在下面的例子中,我们使用了条件函数,可以设置一个文章格式什么内容可以包括,什么内容不能包括。比如,在无题(aside)这种文章格式中,可以不包含 the_title() 函数;但是在相册(galler)文章格式中,包含了 the_title() 函数。这样你就可以根据自己的需要,使用WordPress的模板函数,直接决定在每种文章格式中,哪些内容可以显示。
CSS 样式和标记:在下面的例中,我们使用 post_class() 函数,可以确保每种文章格式都有一个唯一的 CSS 类别,可以给他们分别设计不同的格式类型。此外,使用条件函数,你还可以使用基本的html和css添加自己的标记代码。
这里就是我们给你提供的一个简单的文章格式模板。这个代码很简单,简陋…,只能作为参考之用。希望WordPress 3.1正式发布之后,WordPress 官方团队将给我们提供进一步的准确文档。

<?php get_header(); ?>
  • <div id="main">
  • <?php if (have_posts()) : ?>
  • <?php while (have_posts()) : the_post(); ?>
  •     <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
  •         <?php
  •             if ( has_post_format( ‘aside’ )) {
  •                 echo the_content();
  •             }
  •  
  •             elseif ( has_post_format( ‘chat’ )) {
  •                 echo<h3>;
  •                 echo the_title();
  •                 echo</h3>;
  •                 echo the_content();
  •             }
  •  
  •             elseif ( has_post_format( ‘gallery’ )) {
  •                 echo<h3>;
  •                 echo the_title();
  •                 echo</h3>;
  •                 echo the_content();
  •             }
  •  
  •             elseif ( has_post_format( ‘image’ )) {
  •                 echo<h3>;
  •                 echo the_title();
  •                 echo</h3>;
  •                 echo the_post_thumbnail(‘medium’);
  •                 echo the_content();
  •             }
  •  
  •             elseif ( has_post_format(link)) {
  •                 echo<h3>;
  •                 echo the_title();
  •                 echo</h3>;
  •                 echo the_content();
  •             }
  •  
  •             elseif ( has_post_format( ‘quote’ )) {
  •                 echo the_content();
  •             }
  •  
  •             elseif ( has_post_format( ’status’ )) {
  •                 echo the_content();
  •             }
  •  
  •             elseif ( has_post_format( ‘video’ )) {
  •                 echo<h3>;
  •                 echo the_title();
  •                 echo</h3>;
  •                 echo the_content();
  •             }
  •  
  •             elseif ( has_post_format( ‘audio’ )) {
  •                 echo<h3>;
  •                 echo the_title();
  •                 echo</h3>;
  •                 echo the_content();
  •             }
  •  
  •             else {
  •                 echo<h3>;
  •                 echo the_title();
  •                 echo</h3>;
  •                 echo the_content();
  •             }
  •         ?>
  •     </div>
  • <?php endwhile; else: endif; ?>
  • </div>
  • <?php get_sidebar();  get_footer(); ?>
  • 在主题index.php、single.php文件中if (have_posts()) : while (have_posts()) : the_post();后面加上如下代码;

    if ( has_post_format( 'aside' ) {
  • //  典型样式就是没有标题。类似于 Facebook 或人人网中更新的一条日志。
  • } else if (has_post_format('chat')) {
  • // 聊天记录,类似于:
  • // 张三: foo
  • // 李四: bar
  • // 张三: foo 2
  • } else if (has_post_format('gallery')) {
  • //  图像陈列厅。文章中通常会有“gallery”代码和相应的图像附件。
  • }else if (has_post_format('image')) {
  • // 单张图像。文章中的首个 <img /> 标记将会被认为是该图片。另外,如果文章只包含一个 URL 链接,则被认为是该图片的 URL 地址,而文章标题(post_title)将会作为图片的标题属性。
  • }else if (has_post_format('link')) {
  • // 链接到其它网站的链接。主题可能会使用文章中的第一个 <a href=""> 标签作为文章的外部链接。有可能有的文章至包含一个 URL,那么这个 URL 将会被使用;同时,文章标题(post_title)将会是附加到它的锚的名称。
  • }else if (has_post_format('quote')) {
  • // 引用他人的一段话。通常使用 blockquote 来包裹引用内容。或者,可能直接将引语写入文章,并将其出处写在标题栏。
  • }else if (has_post_format('status')) {
  • // 简短更新,通常最多 140 个字符。类似于微博 Twitter 状态消息。
  • }else if (has_post_format('video')) {
  • // 单一视频。文章中第一个 <video /> 或 object 或 embed 将被作为视频处理。或者,文章可以仅包含视频的 URL,甚至一些主题和插件可以支持自动嵌入您的文章附件中的视频。
  • }else if (has_post_format('audio')) {
  • // 一个音频文件。可以用于播客(podcasting)等。
  • }else {
  • // code to display the normal format post here
  • }
  • 至此基本上大功告成了

    PS:最后不要忘了end if结束条件语句哦!

    网站统计 Statistics

    • 创建时间: 2005年1月3日 距今5062 天
    • 日志总数: 2461
    • 评论总数: 630
    • 标签总数: 654
    • 链接总数: 273
    • 最后更新: 2018-8-31 17:57:04
    • 您是本站第 14144283 位访客

    广告区 Guǎng Gào