自定义帖子类型的多个模板

时间:2012-12-01 作者:paulcol.

作为wordpress的新用户,我发现预设模板结构有点限制,这是因为我使用过的其他模板路由CMS的灵活性。

说到这里,我知道有很多变通方法,我现在正在尝试建立它们。

--

我发现的主要障碍之一是将内容分散到多个位置。目前,我正在尝试将相同的帖子类型内容输出到两个部分或模板中。

例如,我有一个自定义帖子类型“ballons”,其中包含与ballon相关的帖子。我想将这些帖子输出到两个不同的模板/部分(例如,普通版本和移动版本)

理想情况下,url结构将表示以下内容:

/{post\\u type}/{post\\u slug}

/气球/my\\u red\\u ballon\\u post/手机/气球/my\\u red\\u ballon\\u post

我知道如何将这个url结构路由到特定模板的唯一方法是使用页面。如果可能的话,我希望避免在页面中添加条目,因为没有特定于页面的内容。

--

一旦设置完毕,我想创建一个所有气球的列表页面。我想知道这个设置是否与上面输出的特定帖子相同或不同。

url结构应为:

/气球//手机/气球/

--

感谢您的时间:D

--保罗

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

移动电话可能不是一个很好的例子--responsive design 会处理好的。

如果这是我的项目,我会采取稍微不同的方法。我不会在URL前面加前缀,而是在手机的一端加上一个重写端点。端点与使用template_include 过滤器可以工作。

所以你最终得到了这样的永久链接结构

/{post_type}/{post_slug}

/{post_type}/{post_slug}/mobile

有很多答案explain this 在别处对于mobile 端点。

<?php
add_action(\'init\', \'wpse74553_add_endpoints\');
function wpse74553_add_endpoints()
{
    // EP_ALL adds the endpoint to everything.
    add_rewrite_endpoint(\'mobile\', EP_ALL);
}

// this makes the naked `mobile` endpoint work vs. having to
// use something `mobile/works`.
add_filter(\'request\', \'wpse74553_filter_request\');
function wpse74553_filter_request( $vars )
{
    if(isset($vars[\'mobile\']))
        $vars[\'mobile\'] = true;

    return $vars;
}
从那里你可以template_include 如果mobile 已设置查询变量。

<?php
add_filter(\'template_include\', \'wpse74553_include\');
function wpse74553_include($t)
{
    if(get_query_var(\'mobile\'))
    {
         // you have a request with the mobile endpoint
         $t = \'mobile-template.php\';
    }

    return $t;
}
唯一需要注意的是template_include 根据每个请求激发。它并不具体,所以如果您想使用它,可能需要进行比上面更多的检查。还有一些更具体的过滤器;进去看看wp-includes/template.php 获得一个想法,特别是功能get_query_template.

对于单篇文章,您可以使用single_template 例如,过滤器。

简而言之,您完全不受模板层次结构的限制,您可以使用template_include 或任何{{type}}_template 过滤器。

SO网友:Brent

我最喜欢的WordPress参考资料之一:http://codex.wordpress.org/File:Template_Hierarchy.png

请注意自定义帖子类型的选项,例如存档-“自定义帖子类型”。php或single-“自定义帖子类型”。php。

如果您想为mobile verse标准演示文稿创建相同内容的不同版本,这难道不是样式表和媒体查询的问题吗?如果您的设计布局正确,则应该为移动版本提供最少的内容,如果不是移动版本,则可以提供更多的辅助内容和辅助设计元素。

下面是另一篇文章,讨论了创建页面移动版本的利弊,而不仅仅是规划响应性设计:http://mobile.smashingmagazine.com/2012/05/24/creating-mobile-optimized-websites-using-wordpress/

希望这有帮助。

p、 我习惯于用两个O来拼写“ballods”,但也许在我的家乡他们就是这样拼写的。

结束

相关推荐

Enable page templates. How?

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