WordPress-根据URI加载模板

时间:2011-06-28 作者:Mazatec

我有许多自定义的帖子类型,例如:。\'windows\', \'doors\', \'garages\'

我想加载一个自定义模板(special.php) 每当我的wordpress站点有如下url时:

www.mysite.com/windows/
www.mysite.com/doors/
www.mysite.com/garages/
我不想使用页面,因为它在这种情况下不合适(我在上面的示例中给出了一个缩小的示例)

How can I achieve this?

目前,由于没有具有这些名称的页面,我得到了404(index.php)

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

我假设您的自定义帖子类型窗口将映射到/windows/etc?

您可以通过单个posttype为各个自定义帖子类型自定义模板。主题中的php,例如单个窗口。php单门。php和单车库。php Wordpress将自动获取这些

您还可以使用自定义页面模板,例如页面窗口。php或具有正确模板名称的自定义模板。

如果页面旨在列出帖子类型,则可以尝试创建帖子存档模板,例如:http://mark.mcwilliams.me/2010/10/wordpress-3-1-introduces-custom-post-type-archives/

或者,您可以为上述每个名称创建一个分类法,并使用分类法窗口。php

使用以上所有信息,可以使用以下内容共享代码:

<?php
// example code, may need minor modifications
get_template_part(\'special\',$post->post_type);
允许您共享一个文件中所有页面的代码,并提供子主题支持,以及通过特殊窗口等文件进行覆盖的能力。php

或者,如果上述任何一项都不适合您,则有一个最终解决方案:

http://www.braindonor.net/coding-blog/custom-pages-with-wordpress-plugins/230/

这将允许您以独立于主题的方式,在不需要任何帖子或任何类型的页面的情况下,在任何地方放置一个包含您想要的任何内容的页面。

SO网友:bingjie2680

在单个中移动所有脚本。php到名为say“narmol.php”的anthor模板

在单曲中。php,放置如下条件

 if(post_type="windows" || "doors" || "garages") include "special.php";
 else include "normal.php";
上面的代码只是一个想法(伪代码)。我想你知道如何实现它。如果你不知道,请告诉我。

SO网友:Anh Tran

注册新的帖子类型时,有一个参数将启用帖子类型存档has_archive (检查Codex). 启用post类型存档时,这些URL:

www.mysite.com/windows/
www.mysite.com/doors/
www.mysite.com/garages/
will使用archive-$post_type.php 作为模板文件。如果文件archive-$post_type.php 不存在,它会寻找archive.php. (检查Codex)

因此,我认为一个简单的解决方案是检查$post_type 在里面archive.php 文件和windows, doors, garages 然后我们包括special.php, 像这样:

<?php
// archive.php
$post_type = get_query_var(\'post_type\');
if (in_array($post_type, array(\'windows\', \'doors\', \'garages\'))) {
    include \'special.php\';
    exit;
}

// default content for other archive type
?>
Note: 别忘了设置has_archivetrue 注册帖子类型时。

结束

相关推荐

Changing attachment urls?

如何更改附件页URL的格式/[post-url]/[attachment-name]/ 到/media/[attachment-name]/? 我知道我可以覆盖get_attachment_link 通过attachment_link 过滤器,但我想我需要更改重定向结构,以便WordPress知道如何处理这些URL?