如何根据作者显示不同的单帖模板?

时间:2012-02-23 作者:Sledge81

我当前的单发帖子。php使用以下if条件并呈现适当的模板。

<?php
$post = $wp_query->post;
    if ( in_category(\'4\') || in_category(\'59\') ) {
        include(TEMPLATEPATH . \'/review-post.php\');
        }
    elseif (in_category(\'5\')) {
        include(TEMPLATEPATH . \'/promo-post.php\');
        }
    else {
        include(TEMPLATEPATH . \'/regular-post.php\');
        }
?>
我想修改这个,以便/123作者。php single post模板是在特定作者发布文章时呈现的。

我如何修改/附加上述条件,以便单个帖子在注意到123author的帖子时可以查找特定模板?

谢谢

2 个回复
最合适的回答,由SO网友:Tom 整理而成

关于你的主题是如何设置的,我有几个假设:

您有两个文件:索引。php。这是开始执行的文件the loop.get_template_part(). 如果没有,则很容易实现例如,我的系统中有两个用户,每个用户都由“admin”和“user”标识

此时,我们将创建第二个模板,用于显示特定作者的内容。在主题目录的根目录中,添加一个新的模板文件-该文件将用于呈现特定作者的内容。

假设您的基本模板文件是content.php, 添加content-user.php. 您可以向该文件添加任何您想要的内容-一个好的开始可能是复制和粘贴内容content.php. 请注意,新模板的名称并不重要,但更清楚一些,因为它将由名为“user”的作者呈现内容

接下来,跳到你的index.php 归档并定位循环。很可能它看起来像这样:

while( have_posts() ) : the post(); 
  get_template_part( \'content\', get_post_format() );
endwhile;
如果您的主题不支持帖子格式和/或您使用的是如上所述的标准include文件,它可能会如下所示:

while( have_posts() ) : the post(); 
  include_once( \'content.php\' )
endwhile;
为了回答这个问题,我将使用第一个示例。这是在内容中包含不同模板文件的最佳做法。

此时,我们需要设置一个检查,以包含基于用户的模板。我将设置我的循环,为“用户”编写的所有文章显示一个模板,并为“管理员”和其他任何人编写的所有文章显示一个单独的模板:

while( have_posts() ) : the post(); 
  if( get_the_author() == \'user\' ):
      get_template_part( \'content-user\', get_post_format() );
  else:
      get_template_part( \'content\', get_post_format() );
  endif;
endwhile;
代码应该足够容易阅读,但要清楚:

首先,我们正在检查当前帖子的作者,如果作者是“用户”,那么我们将使用我们创建的第二个模板,否则,我们将使用默认模板。您的里程数可能会根据主题设置而有所不同,但要利用get_the_author() 函数可以帮助您动态选择模板。

Update Based on Answer Comment

您可以使用get_the_author_meta.

在没有看到更多代码的情况下,我无法确定主题是如何设置的,但如果必须根据您提供的代码进行猜测,我建议尝试以下操作:

$post = $wp_query->post;
if(get_the_author_meta(\'user_nicename\', $post->post_author) == \'user\') {
    /* Do your author-specific work */
} else {
    if ( in_category(\'4\') || in_category(\'59\') ) {
        include(TEMPLATEPATH . \'/review-post.php\');
    } elseif (in_category(\'5\')) {
        include(TEMPLATEPATH . \'/promo-post.php\');
    } else {
        include(TEMPLATEPATH . \'/regular-post.php\');
    }
} 

SO网友:testtoabc

有时我们需要以不同的样式显示我们的详细信息页面(即single.php)。从这个意义上讲,我在http://www.webinbangla.com/2012/05/different-style-of-single-php/

结束

相关推荐

POSTS_PER_PAGE分页冲突(&P)

我有一个自定义查询来显示我的自定义帖子类型。posts_per_page 设置为“5”。在“每页管理帖子”设置为“10”(设置=>阅读=>博客页面最多显示10篇帖子)中,我的模板每页列出5篇帖子。如果我有15篇帖子,它必须在3页中显示,but on third page I get 404 error. 因此,我的分页使用管理设置(每页10篇文章)。我怎样才能修复它?global $paged; query_posts(array( \'post_type\' =&g