WordPress中是否可以使用动态URL

时间:2014-06-18 作者:Niraj Chauhan

我知道这个标题看起来有点混乱,但我要寻找的是symfony或ror中可能存在的东西。我有一个包含此URL的页面:http://mydomain.com/job/. 现在我想要这个URL结构http://mydomain.com/job/php-developer/45, http://mydomain.com/job/java-developer/46. 之后的参数/job/ 是动态的,它们不是任何页面或帖子,它们位于一个页面下job

这在Wordpress中可能吗?

UPDATED QUESTION:

好的,根据@Gioia的回答,我更新了代码。

下面是我的代码:

add_filter(\'query_vars\', \'add_query_vars\');
function add_query_vars($aVars) {
    $aVars[] = "job_title"; 
    $aVars[] = "job_id"; 
    return $aVars;
}

add_action( \'init\', \'add_rules\' );  
function add_rules() {
    add_rewrite_rule(\'^/job/([^/]*)/([^/]*)/?\',\'index.php?page_id=13338&job_title=$matches[1]&job_id=$matches[2]\',\'top\');
}
所以当我尝试这个URL时,这会给我带来404页http://mydomain.com/job/php-dev/45. 但是当我尝试这个URL时http://mydomain.com/index.php?page_id=13338&job_title=php-dev&job_id=45 它起作用了。

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

我不完全明白您的意思,参数属于页面作业,但如果您的意思是使用javascript/ajax在同一页面上加载不同的内容,那么您可以使用https://github.com/browserstate/history.js/ 为每个状态生成相应的url。如果你不知道你想做什么,很难说你是如何实现这一点的。

更新我认为您应该使用自定义重写规则。这就是wordpress用来创建漂亮URL的地方,它有一个API可以添加您自己的URL。

首先,您需要在您的案例标题和job\\u id中添加需要跟踪的标记。实际上,您可能应该将标题更改为类似job\\u title的内容,我不完全确定标题是否会产生问题,但由于它是wordpress中的一种内容,所以最好是安全的。

我使用了以下代码,您需要将其添加到函数中。php,在您的主题中。

add_filter(\'query_vars\', \'add_query_vars\');
function add_query_vars($aVars) {
    $aVars[] = "job_title"; 
    $aVars[] = "job_id"; 
    return $aVars;
}  
更多信息:http://codex.wordpress.org/Rewrite_API/add_rewrite_tag

然后在函数中添加重写规则。php:

add_action( \'init\', \'add_rules\' );  
function add_rules() {
    add_rewrite_rule(\'^job/([^/]*)/([^/]*)/?\',\'index.php?page_id=12&job_title=$matches[1]&job_id=$matches[2]\',\'top\');
}
您应该将page\\u id替换为作业的id page更多信息:http://codex.wordpress.org/Rewrite_API/add_rewrite_rule.

保存文件后,需要转到“设置”->“永久链接”,只需保存而不更改任何内容。这将确保正确加载您的设置。

您可以安装插件重写检查器来查看应用的所有重写规则,并检查您的规则是否存在。https://wordpress.org/plugins/rewrite-rules-inspector/

您可以安装插件调试栏来检查页面,并查看将什么重写规则应用于页面:https://wordpress.org/plugins/debug-bar/

在这里,您可以了解有关一般重写规则的更多信息:http://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/

更新2

要检索参数,请执行以下操作:

if (isset($wp_query->query_vars[\'job_title\'])) {
    $job_title = urldecode($wp_query->query_vars[\'job_title\']);?>
<?php }

结束

相关推荐

Updating URLs in many posts

我将我的WP内容复制到另一台服务器上的新安装中,因此现在我上载的PDF文档具有旧的URL。有没有一种简单的方法可以在我所有的帖子中一次解决这个问题,也许可以使用SQL或一些插件?