以正确的方式创建自定义博客页面模板


9

我想为博客文章的展示创建一个新的自定义页面模板。我意识到,当您通过Settings> Reading分配页面以显示帖子时,它将随后分配home.php以显示该页面内容-即页面上的帖子。在页面编辑视图中分配页面模板的选项也会消失。

现在,它按文章视​​图显示默认文章。我想为管理员提供另一种选择,以选择其他模板来对博客进行网格化或砖石布局设置。我不确定该怎么做。

我可以做到这一点,方法是在“ 设置”>“阅读”管理区域中不分配页面以显示博客,然后允许admin用户使用页面编辑中的“页面属性”菜单但根据https://make.wordpress.org将特定模板分配给页面/ themes / 2014/06/28 / static-front-page-and-custom-blog-posts-index-template /的正确处理这是错误的方式

我已经尝试过谷歌搜索解决方案,但我一直发现的只是建议使用的插件。有人可以指出一些有用的资源吗?


我想原来的问题现在已经解决了很久,但是我只是想说通读插件的源代码对我有很多启发。如果可以在WP.org目录中找到插件,则可以单击“开发人员”选项卡,直接从浏览器中查看代码,并查看其操作方式。
rtpHarry

Answers:


8

不要忘记Wordpress最初是为博客CMS设计的,因此,在主题开发方面,开发人员通常会选择非标准方法来换取更多功能的潜力。

主题开发人员在采用这种方法时有三个选择,您提到的其中一个(下面是第二个)。

  1. 直接编辑index.php以修改博客索引。这不是一个好的选择,因为index.php如果模板的另一部分丢失,它应该是一个备用。

    • 优点:快速简便
    • 缺点:容易出错并且违反面向对象的原则
  2. 为博客索引创建页面模板。就像您说的那样,许多主题开发人员选择走这条路,因为这是使您能够控制博客索引的快速方法,并且实际上使您能够处理不同的博客索引模板(这在开发通用主题时非常有用) )。

    • 优点:多功能,可以构建强大的主题
    • 缺点:您无法调用与博客索引有关的Wordpress本机功能。
  3. 创建front-page.phphome.phpindex.php在你的主题。该front-page会为主题的主页。home将默认为您的博客索引,index并将作为所有模板的后备。

    • 优点:清理并充分利用Wordpress的本机对象和方法
    • 缺点:受Wordpress限制:对于您今天看到的许多选项丰富的主题而言并不理想

我个人喜欢使用#2,因为这些天我的大部分Wordpress开发项目不仅是博客:它们是具有深层信息体系结构和复杂交互性的整个网站。



0

在我的回答中涵盖了几个基础。:)

如果您要创建自己的主题,并且想要更改某些类型页面的默认表示形式(例如,类别存档页面或单个博客文章页面),请查看WordPress模板层次结构图。它显示主题目录中的哪些文件用于显示哪些类型的帖子。

通过在主题中具有一个与该层次结构中的文件匹配的php文件,WordPress将自动使用该php文件-例如single.php用于显示单个帖子。如果您已经有了该文件的主题,那么显然您可以更改该文件,它将在网站上反映出来。

另外,如果您想拥有自定义页面模板,但只希望管理员能够(逐个职位地)更改它们,那么您需要对角色和功能进行一些检查。这个StackExchange答案可能会有所帮助。(您仍然需要创建这些自定义页面模板,请参阅Smashing Magazine文章)。

否则,如果您希望管理员根据特定条件更全局地选择页面/帖子模板,或者为整个网站选择自定义页面模板,则需要在主题中添加一个admin-area选项,以及一些自定义选项主题中的代码以基于该选项显示正确的页面。使用众多插件之一可以轻松地向管理区域添加选项,但也可以手动完成(例如,请参见SitePoint上的本文)。


1
感谢您的回答。我知道如何基于Heirachy来为页面/帖子制作页面模板,但是我想不出一种方法为home.php使用“ home.php”提供模板选项(使用与图表相同的术语)您提供的)。当管理员用户在“仪表板”>“设置”>“阅读”中选择一个页面来显示帖子时,将进行设置。然后分配页面home.php / index.php。如果不在“仪表板”>“设置”>“阅读”中未分配页面,则无法找到制作备用模板的方法。
Ryan Coolwebs

@RyanCoolwebs您可能需要在主题中添加一个admin选项,以便在博客文章索引页面的显示样式之间进行选择,然后编辑home.php以读取该选项的值并显示适当的页面变化。
iguanarama

是的,我认为使用定制程序功能可能是实际执行此操作的最佳方法。我可以检查定制程序选项,然后检索适当的模板部分。
Ryan Coolwebs

0

好的,您是说要创建自己的模板页面来显示博客文章,对吗?

然后以这种方式创建一个名为 blog-template.php

在该文件内部,将此代码放在所有内容之上。

<?php 
/*
* Template Name: Blog Post
*/
?>

然后在上面给定的代码下面,将您所有的代码从该index.php/home.php页面放到该页面上,保存文件,然后从创建该页面dashboard,例如说该页面的名称为"Blog"Now,从右边的模板下拉菜单中chose page template创建Blog Post。 。

发布页面,您可以拥有自己的页面来显示您的帖子。

让我知道是否还有其他需要。


好的,所以您刚刚提出了OP明确指出的错误解决方案;)我想,创建页面模板并将其用作博客索引不是最佳方法。
KrzysiekDróżdż

本质上这并不是真的错误,只是OP误解了人们为什么倾向于这样做
-Orun
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.