以编程方式更改帖子模板?

时间:2011-08-04 作者:The Mythical Bird

我需要更改我的网站上数百页的模板。有没有人知道是否有一个命令可以通过编程来完成?请参阅以下代码段;我想用一个函数替换循环中的注释,该函数将更改当前页面的模板:

query = new WP_Query($args);
while ( $query->have_posts() ) : $the_query->the_post();
  if ( has_tag(\'tag-slug\') )
  {
     /* CHANGE TEMPLATE OF $post */
  }
endwhile;
wp_reset_postdata();

4 个回复
SO网友:Not Available

我认为你的意思是用一个新的帖子模板将页面保存到DB?查看post对象中是否有引用页面模板的内容,如果有,请创建一个更新该内容的查询。

更新:摘自wp_insert_post 文档记录注意:page\\u模板键已从$post表中删除,现在位于wp\\u Posteta表中。要设置apage的页面模板,请使用update\\U post\\U meta,而使用meta键\\u wp\\u page\\u template。

因此,您可以使用get_post_meta, 并将其更新为update_post_meta (或设置为add_post_meta)

SO网友:Sisir

你指的是哪种格式?如果您想更改css可以更改的格式。您可以使用post_class() 这将在容器中添加一个命名标记的类。然后您可以针对该类设置样式。

回路内部:

<div <?php post_class()?> >
</div>
同时检查动作pre_get_post; 将其与条件句结合使用可能会有所帮助。

SO网友:Doug

试试这个:

while ( $query->have_posts() ) : $query->the_post();
  if ( has_tag(\'tag-slug\') )
  {
     get_template_part( \'content\', \'tag-slug\' );
  }
  else
  {
     get_template_part( \'content\' );
  }

endwhile;
然后需要创建content.phpcontent-tag-slug.php 具有适当的内容。

您还可以考虑设置Post Formats. 前面的工作要多一些,但接下来会有更好的体验。

SO网友:Kirby

要更改帖子模板,请调用update_post_meta($query->the_post->ID, \'_wp_page_template\', \'YOUR-NEW-TEMPLATE-HERE.php\')

下面是@Xeross链接中的WP Codex中的示例,其中包含原始问题的代码片段:

$query = new WP_Query($args);
while ( $query->have_posts() ) : $query->the_post();
  if ( has_tag(\'tag-slug\') )
  {
     /* CHANGE TEMPLATE OF $post */
    update_post_meta($query->the_post->ID, \'_wp_page_template\', \'YOUR-NEW-TEMPLATE-HERE.php\');
  }
endwhile;
wp_reset_postdata();
感谢@Xeross在链接中提供了答案,并提供了有关模板数据存储位置的文档。更多信息请参见@Xeross的答案https://wordpress.stackexchange.com/a/24933/69247

结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。