WordPress主题开发:如何以正确的方式重定向模板?

时间:2019-05-23 作者:Lucas Vendramini

我正在为WordPress开发一个主题。我对模板重定向有疑问。例如,我有一个主题front-page.php 模板,我不使用index.php 样板我应该用索引做什么。php文件?删除或重定向,如:

指数php

<?php

wp_safe_redirect(\'front-page.php\');
exit();

重定向是否会影响站点的性能?如果我不使用模板,是否应该将其留空?

我总是对模板有这种怀疑。如果我不使用archive.php 模板例如,我应该删除它或重定向到我使用的模板?我不知道如何处理下划线主题文件(我不使用的文件)。

模板层次结构:https://developer.wordpress.org/files/2014/10/Screenshot-2019-01-23-00.20.04.png

强调基本主题:http://underscores.me/

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

我看不出有什么理由重定向index.php. 假设你只有一个头版,没有带存档的博客或帖子类型。您可以在设置->阅读中指定首页,WordPress将为您执行模板重定向。在那一点上,什么都没有用index.php 没有必要重定向它。

也许你安装了一个插件,可以创建一个帖子类型,默认情况下,使用index.php 显示其帖子。你会希望显示一些东西,而不是重定向它,否则你可能会花时间试图弄清楚为什么这个插件的归档文件会被重定向。复制/粘贴page.php 模板,并在其中加入一些基线样式。

如果您确实有一个帖子类型的存档或博客,并且希望保留单个帖子,但是do not 想要一个归档文件,您可以使用template_redirect hook 要重定向请求,请执行以下操作:

/**
 * Redirect Archive Pages
 *
 * @return void
 */
function prefix_redirects() {

    if( is_post_type_archive( \'foobar\' ) ) {
        wp_safe_redirect( home_url() );
        exit();
    }

}
add_action( \'template_redirect\', \'prefix_redirects\' );
如果你真的需要,工具就在那里index.php 是post类型存档的默认显示。我不会重定向它,而是添加一些基线样式。如果需要,您可以随时在以后执行更具体的模板覆盖。

SO网友:Jacob Peattie

不要在模板中重定向到其他模板。模板不是这样工作的。请注意,在您的浏览器中,您从未被重定向到单身。php或首页。php或类似的东西。如果这样做,那么如果加载使用索引的页面。您的浏览器将重定向到的phphttp://website.com/front-page.php 你会得到一个404。

模板已加载include (或require) 在PHP中,通过WordPress将页面呈现为涉及许多WordPress文件的进程的一部分。它们不是直接加载的,也不会重定向到。

对于您的具体示例,首先要注意的是索引。php是required file 用于WordPress主题。所以你不能删除它,也不应该从中重定向。所以如果你的头版。php和索引。php模板是一样的,那么你应该删除首页。php,而不是索引。php。

你应该以索引开始你的主题。php,它应该是一般帖子列表的模板。然后,通过参考Template Hierarchy 并添加您需要的内容。

然而,假设我有一个自定义的帖子类型,其归档模板(例如。archive-project.php) 对于其分类法,需要与分类法存档模板相同(例如。taxonomy-project_category.php). post类型存档和分类法存档都可以追溯到archive.php. 问题是,如果您已经将其用于常规帖子,则无法为这两种类型的页面创建单一模板。

最简单的解决方案是使用get_template_part(). 所以archive-project.php 可能是你的主要模板,然后taxonomy-project_category.php 可能是这样的:

<?php get_template_part( \'archive-project\' ); ?>

SO网友:Nathan Powell

指数php可以是<?php //silent 在这里在主题层面上其实并不重要。除非你想在functions.php 文件它在主题目录中已过时。就像apache服务器上php/html中的任何其他内容一样。

相关推荐

Redirection on domain name

我目前正在调试一个荷兰WP网站https://glaszetterdirect.nl问题是,我从以下位置收到了不需要的重定向:http://www.glaszetterdirect.nl 到https://glaszetterdirect.nl/wp-admin我真的不明白发生了什么事。我已经检查了以下内容:.htaccesswp-config.phpwp_options db表格(siteurl 和home 两者:https://glaszetterdirect.nl)</已选中并删除wp_old