具有$_SESSION变量的永久链接结构

时间:2014-03-29 作者:Xtremefaith

我有一个项目,它的内容在整个网站上都被过滤(许多自定义WP\\U查询调用)。最初不需要URL,只需按$_SESSION 变量很好地工作,但现在客户端希望每个专业都加载一个自定义URL(很像类别)。我需要首先知道:

Is it possible to make a permalink structure with the $_SESSION variable?

如果是:

How can I create a URL structure like this?

Archive Page:

http://domain.com/session-var/

Single Page:

http://domain.com/session-var/post-name

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

因此,在一位好朋友和php开发人员的帮助下,我自己就能够解决这个问题。很抱歉,有些功能i.e. CUSTOM::slugify() 是自定义的,但如有必要,您可以查看Div Starter theme 了解更多信息。

add_action( \'init\', \'cc_rewrite_add_rewrites\' );
function cc_rewrite_add_rewrites() {
    $specialties = get_specialties(); //Fetches an array of postmeta defined from an ACF repeater field


    add_rewrite_rule( "^(" . implode("|", array_map(function($a) { return strtolower(CUSTOM::slugify($a)); }, $specialties) ) . ")/?", \'index.php\', \'top\' );
    flush_rewrite_rules();

    // check path for specialty loop through specialties
    foreach($specialties as $specialty) {
        $slug = CUSTOM::slugify($specialty); // I needed to convert to a slug, custom function in Div Starter

        if (preg_match("/\\/" . strtolower($slug) ."(\\/|$)/i", strtolower($_SERVER[\'REQUEST_URI\']) )) {
        // set session variable
        $_SESSION[\'specialty\'] = $specialty;
        break;
    }
}
}

我注意到我的分页使用了这种新的permalink结构,并将其破坏,因此我能够钩住它并删除添加内容,如下所示:

add_filter( \'get_pagenum_link\', \'wpse_cc_pagenum_link\' );

function wpse_cc_pagenum_link( $link ){
    return $url = str_replace( \'/\'.CUSTOM::slugify($_SESSION[\'specialty\']), \'\', $link ); 
}
有关自定义永久链接的详细信息this guide 真的很有帮助

结束

相关推荐

Permalinks not working

我知道,问了无数次,回答了无数次。我一生都找不到我的错误。正在尝试将永久链接设置为使用post name,/%postname%/尝试访问主页以外的任何其他地方都会产生404错误。默认的永久链接设置工作正常。任何帮助都将不胜感激。.htaccess在web根目录中 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\\.ph