Wordpress映射URL到自定义文件


Wordpress mapping URL to custom files

我在wordpress安装的模板目录中有一个search.php和stuff.php文件。当我做http://example.com/search.php时,我希望它解析到我的自定义search.php文件。我现在得到一个404。

文件位于siteroot/wp-contents/themes/theme-name/

我需要对另一个文件执行相同的行为。

谢谢!

在您的主题目录中有PHP文件将不会自动拾取,除非您导航到www.yourblog.com/wp-content/themes/your-theme/stuff.php,这实际上完全绕过WordPress(不好!)。默认情况下,WordPress会查找处理网站页面内容的特定文件,这里有一张方便的图片,向您展示它是如何分解的:http://codex.wordpress.org/images/1/18/Template_Hierarchy.png

除此之外,如果你想让你自己的搜索页面运行,你需要做一个模板文件,然后让WordPress知道它的存在和何时使用它。使用我上面链接的图片,你可以看出,如果你的主题目录中有一个名为search.php(小写)的文件,WordPress应该把它捡起来,并自动将其用作搜索页面。除此之外,您还可以根据需要搜索的内容拥有许多不同的搜索结果页面。查看过滤器template_include -更多信息在这里:http://codex.wordpress.org/Plugin_API/Filter_Reference/template_include

下面是上面页面中的一个快速示例,它展示了如何为给定的用例定义模板PHP文件:
add_filter( 'template_include', 'portfolio_page_template', 99 );
function portfolio_page_template( $template ) {
if ( is_page( 'portfolio' )  ) {
    $new_template = locate_template( array( 'portfolio-page-template.php' ) );
    if ( '' != $new_template ) {
        return $new_template ;
    }
}
return $template;
}

注意到它是如何在顶部写"is_page"的吗?这是一个条件标签,WordPress自带了很多条件标签来帮助确定访问者请求的页面类型。有关模板标记(包括is_search)的列表,请查看:http://codex.wordpress.org/Conditional_Tags

希望这对你有帮助,如果你需要更多的帮助,请回复。

编辑-对不起,我没有看到你的标题,如果你试图映射一个URL到一个自定义文件,你需要创建一个重写规则。下面是一个很好的演练:http://matty.co.za/2009/11/custom-url-rewrites-in-wordpress/