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

林继 WordPress 4,045 共写了1078个字 (2010-12-28 13:08:51) 1条评论 打印 扫描二维码 百度未收录

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

  1. 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 官方团队将给我们提供进一步的准确文档。

  1. <?php get_header(); ?> 
  2. <div id="main"> 
  3. <?php if (have_posts()) : ?> 
  4. <?php while (have_posts()) : the_post(); ?> 
  5.     <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> 
  6.         <?php 
  7.             if ( has_post_format( ‘aside’ )) { 
  8.                 echo the_content(); 
  9.             } 
  10.  
  11.             elseif ( has_post_format( ‘chat’ )) { 
  12.                 echo<h3>; 
  13.                 echo the_title(); 
  14.                 echo</h3>; 
  15.                 echo the_content(); 
  16.             } 
  17.  
  18.             elseif ( has_post_format( ‘gallery’ )) { 
  19.                 echo<h3>; 
  20.                 echo the_title(); 
  21.                 echo</h3>; 
  22.                 echo the_content(); 
  23.             } 
  24.  
  25.             elseif ( has_post_format( ‘image’ )) { 
  26.                 echo<h3>; 
  27.                 echo the_title(); 
  28.                 echo</h3>; 
  29.                 echo the_post_thumbnail(‘medium’); 
  30.                 echo the_content(); 
  31.             } 
  32.  
  33.             elseif ( has_post_format(link)) { 
  34.                 echo<h3>; 
  35.                 echo the_title(); 
  36.                 echo</h3>; 
  37.                 echo the_content(); 
  38.             } 
  39.  
  40.             elseif ( has_post_format( ‘quote’ )) { 
  41.                 echo the_content(); 
  42.             } 
  43.  
  44.             elseif ( has_post_format( ’status’ )) { 
  45.                 echo the_content(); 
  46.             } 
  47.  
  48.             elseif ( has_post_format( ‘video’ )) { 
  49.                 echo<h3>; 
  50.                 echo the_title(); 
  51.                 echo</h3>; 
  52.                 echo the_content(); 
  53.             } 
  54.  
  55.             elseif ( has_post_format( ‘audio’ )) { 
  56.                 echo<h3>; 
  57.                 echo the_title(); 
  58.                 echo</h3>; 
  59.                 echo the_content(); 
  60.             } 
  61.  
  62.             else { 
  63.                 echo<h3>; 
  64.                 echo the_title(); 
  65.                 echo</h3>; 
  66.                 echo the_content(); 
  67.             } 
  68.         ?> 
  69.     </div> 
  70. <?php endwhile; else: endif; ?> 
  71. </div> 
  72. <?php get_sidebar();  get_footer(); ?>

在主题index.php、single.php文件中if (have_posts()) : while (have_posts()) : the_post();后面加上如下代码;

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

至此基本上大功告成了

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

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

一条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >