禁用并重定向主页的分页

时间:2021-05-09 作者:Jpganja

我的主页是一个静态页面,但Wordpress创建枚举“;主页/第2页//3/quot;唯一的解决方案是禁用页面生成,也可以重定向,这是下面的说明,但我希望它只对主页有效,而不是对整个网站有效。

提前感谢您的建议。

global $posts, $numpages;

$request_uri = $_SERVER[\'REQUEST_URI\'];

$result = preg_match(\'%\\/(\\d)+(\\/)?$%\', $request_uri, $matches);

$ordinal = $result ? intval($matches[1]) : FALSE;

if(is_numeric($ordinal)) {

    setup_postdata($posts[0]);

    $redirect_to = ($ordinal < 2) ? \'/\': (($ordinal > $numpages) ? "/$numpages/" : FALSE);

    if(is_string($redirect_to)) {

        $redirect_url = get_option(\'home\') . preg_replace(\'%\'.$matches[0].\'%\', $redirect_to, $request_uri);

        if($ordinal < 2) {
            header($_SERVER[\'SERVER_PROTOCOL\'] . \' 301 Moved Permanently\');
        } else {
            header($_SERVER[\'SERVER_PROTOCOL\'] . \' 302 Found\');
        }

        header("Location: $redirect_url");
        exit();

    }
}

2 个回复
SO网友:Dawid

你是说只有第一页?

如果是,您需要If语句:

if ( !is_paged() ) {
//do stuff only on 1 page
}
如果它不起作用,您可能应该创建一个新变量来存储您的主页URL,并生成另一个If语句,如If URLhttps://yourdomain.com/ 然后做一些事情。

SO网友:Jpganja

根据主题文件中的字符串,我在函数文件中添加了以下指令:

function no_pagination_home() { $paged = bf_get_query_var_paged(); if ( is_home() || ( ( \'page\' === get_option( \'show_on_front\' ) ) && is_front_page() && bf_get_query_var_paged( 1 ) > 1 )) { header("Location: home"); exit(); } } add_action (\'parse_query\', \'no_pagination_home\');

它完全符合我的要求,即它仅通过强制重定向到Home来避免主页分页,将其保留在类别中,但对于PHP 8,标题上会出现警告,我无法解释:

Warning: 尝试读取属性“;ID“;在/class wp查询中为空。php在线4044

Warning: 尝试读取属性“;职位名称“;在/class wp查询中为空。php在线4066

Warning: 尝试读取属性“;职位名称;在/class wp查询中为空。php在线4048

所涉及的字符串包括:

public function is_page( $page = \'\' ) {
    if ( ! $this->is_page ) {
        return false;
    }

    if ( empty( $page ) ) {
        return true;
    }

    $page_obj = $this->get_queried_object();

    $page = array_map( \'strval\', (array) $page );

    if ( in_array( (string) $page_obj->ID, $page, true ) ) {
        return true;
    } elseif ( in_array( $page_obj->post_title, $page, true ) ) {
        return true;
    } elseif ( in_array( $page_obj->post_name, $page, true ) ) {
        return true;
    } else {
        foreach ( $page as $pagepath ) {
            if ( ! strpos( $pagepath, \'/\' ) ) {
                continue;
            }
            $pagepath_obj = get_page_by_path( $pagepath );

            if ( $pagepath_obj && ( $pagepath_obj->ID == $page_obj->ID ) ) {
                return true;
            }
        }
    }

    return false;
}

相关推荐

change pagination url

目前,我的分页页面URL为:http://www.example.com/category_name/page/2但我需要将此URL结构更改为:http://www.example.com/category_name/?page=2等有什么解决方案吗?