如果页面不存在,如何重定向到类别页面?

时间:2021-09-03 作者:J.BizMai

在我目前的情况下,系统尝试查找一个页面,如果找不到,则显示404。我想使用相同的url。。。喜欢https://example.com/{{slug}}/

检查是否存在具有此slug的页面:是-显示页面无类别页面;显示404页,在WP中建议的最佳方法是什么?

2 个回复
SO网友:tiago calado

您可以在文件404中执行此操作。php,首先检查文件是否为页面,如果是,则重定向到该链接,如果不是页面,则重定向到带有该段代码的类别页面,否则就让404。php页面

这在文件404中。php

SO网友:Antti Koskinen

我将使用一个连接到template_redirect 行动,因为

这个动作挂钩在WordPress确定要加载哪个模板页面之前执行。如果您需要在完全了解所查询内容的情况下执行aredirect,那么这是一个很好的挂钩。

资料来源:https://developer.wordpress.org/reference/hooks/template_redirect/

在自定义函数中,您可以首先检查当前查询的结果是否为;“未找到”;使用if 声明反对is_404(). 如果没有,就早点回来,否则就继续走。然后深入研究全局变量$wp 获取请求的路径。

将路径用于get_term_by() 查找具有相同段塞的类别。如果找到,get_term_link(), 和wp_redirect() 不忘exit;. 否则,让WP继续执行它正在执行的操作,并显示原始查询的404页面。

比如像这样,

add_action(\'template_redirect\', function(){
    // do nothing, if not a 404
    if ( ! is_404() ) {
        // return
    }
    // WordPress environment setup class
    // https://developer.wordpress.org/reference/classes/wp/
    global $wp;
    // try to find term with slug
    $maybeCategory = get_term_by(
        \'slug\',
        basename($wp->request), // the last part of the requested path
        \'category\'
    );
    // redirect to category, if it exists
    if ( $maybeCategory ) {
        wp_redirect( get_term_link( $maybeCategory ) );
        exit;
    }
});
这种代码可以添加到自定义插件或主题的functions.php 文件

相关推荐

WP_LIST_CATEGORIES在有子类别的类别上没有链接的WP_LIST_CATEGORYS漫游(以创建嵌套下拉菜单)

我想做一个与wp_list_categories 生成嵌套菜单的步骤uls使用我的类别、子类别和子类别(?)结构任何具有子类别的类别都不能是链接,因此可以单击它以显示子类别(或子类别)。以下是我想要的(只有带有a的项目才应该是链接):Tops Shirts T-shirts Longsleeves Jackets Hoodies Raincoats Shoes Boots Fo