如何让URL中的变量看起来像固定链接结构?

时间:2012-04-18 作者:FrankPereiro

我一直在到处寻找这个问题的答案,但没有成功,这就是为什么我在这里问这个问题。

我甚至不知道这个问题是否正确。

无论如何,我会尽力解释的。

我有一个在URL中包含变量的WordPress页面,如下所示:http://planeta-beisbol.com/tal-dia-como-hoy/?dia=18&mes=04

内容根据一年中的日期和月份而变化,因为内容是从数据库中收集的。

我的问题是:如何将URL更改为planeta-beisbol.com/tal-dia-como-hoy/dia/18/mes/04planeta-beisbol.com/tal-dia-como-hoy/18/04

非常感谢您的帮助。谢谢

3 个回复
SO网友:Joseph Leedy

以下两个功能应为您指明正确的方向:

function wpse49393_query_vars($query_vars)
{
    $query_vars[] = \'myvar\';
    return $query_vars;
}
add_filter(\'query_vars\', \'wpse49393_query_vars\');

function wpse49393_rewrite_rules_array($rewrite_rules)
{
    $rewrite_rules[\'path/to/page/([^/]+)/?$\'] = \'index.php?pagename=path/to/page&myvar=$matches[1]\';
    return $rewrite_rules;
}
add_filter(\'rewrite_rules_array\', \'wpse49393_rewrite_rules_array\');
我会在适当的时候给予信任,但我记不起我最初在哪里找到这段代码。我刚刚从我目前正在进行的一个项目中提取了这个。要使用它,请更改myvar 在第一个函数中以及此处输入变量名称:&myvar=$matches[1]. 改变path/to/page/ 到第二个函数中两个位置的页面实际路径。

SO网友:Alex Thomas

你可以做你自己的定制permalink结构,你看过这里吗-http://codex.wordpress.org/Using_Permalinks?

SO网友:FrankPereiro

感谢这篇文章的提醒:http://zagar.biz/2011/wordpress-creating-custom-permalinks/

我的最终代码是这样的:

In the theme\'s functions.php file

add_filter(\'rewrite_rules_array\',\'mycode_add_rewrite_rules\');

// Add all rewrite rules here
// ** Remember to Flush Rewrite rules when adding new rules.
// this is done by visiting the Settings > Permalinks in WP admin.

function mycode_add_rewrite_rules($rules){
    $newrules = array();
    $newrules[\'tal-dia-como-hoy/([^/]+)/([^/]+)/?\'] = \'index.php?pagename=tal-dia-como-hoy&dia=$matches[1]&mes=$matches[2]\';
    return $newrules + $rules;
}

add_filter(\'query_vars\',\'mycode_add_rewrite_query_vars\');

// Add all slugs so that WP recognizes it
function mycode_add_rewrite_query_vars($vars){
    array_push($vars, \'dia\');
    array_push($vars, \'mes\');
    return $vars;
}
然后,在the page I created. 这只是一个普通的wordpress页面,不是模板或类似的东西

global $wp;

// connect to your external DB, etc...

if($wp->query_vars["dia"]){

echo "Permalinks are working";
    // load up your external data here and display single resource
        // if the beard slug doesn\'t exist, redirect to 404
} else {
    // load up whatever you want to display for the index version.
echo "Nothing shows up but it\'s working anyway";
}
我必须编辑页面,使其与我的全新permalinks保持一致。

这是我将用于此代码的页面:http://planeta-beisbol.com/tal-dia-como-hoy/19/04/

“04年19日”部分的意思是:4月19日

我希望这段代码对每个人都有用

结束

相关推荐

Page Name and Permalinks

我正在使用WordPress 3.2.1,刚刚在我的网站上添加了一个名为“中心管理”的页面,这反过来又创建了一个永久链接:http://localhost:8888/mysite/centre-management/对于我刚刚创建的页面。之后,我把这个页面弄得一团糟,想重新开始。因此,当我现在创建另一个与上述名称相同的新页面时,即“中心管理”,WordPress现在为我创建一个永久链接:‎http://localhost:8888/mysite/centre-管理-2/这不是我想要的。我希望它显示为:ht