自定义重写永久链接WordPress

时间:2013-01-29 15:19:43

标签: wordpress url-rewriting permalinks

我有一个页面模板,可以将一些变量添加到url的末尾,这样我就可以根据传递的内容显示数据。

ie:mysite.com/search-listins/listing/?address=123+The+Street&mls-number=00000

我需要将其转换为非常固定的链接。像这样的事情:

mysite.com/search-listings/listing/123-The-Street OR mysite.com/search-listings/listing/00000-123-The-Street

我尝试过使用这个功能。但似乎没有任何效果。有什么想法吗?这些不是来自自定义帖子类型。如您所见,这些不是自定义帖子类型。这些是位于wp_表之外的MLS项目。

功能:

 function setup_filter_rewrites(){
     add_rewrite_rule('search-listings/listing/([^/]*)/?', 'index.php?pagename=search-     listings/listing/?address=$matches[1]&mls-number=$matches[2]', 'top');
 }
 add_action( 'init', 'setup_filter_rewrites' );

 function setup_filter_query_vars( $query_vars ){
     $query_vars[] = 'listing';
     return $query_vars;
 }
 add_filter( 'query_vars', 'setup_filter_query_vars' );`

1 个答案:

答案 0 :(得分:0)

我总是使用此代码而不是add_rewrite_rule()函数:

add_filter( 'query_vars', 'my_query_vars' );
function dlouhavidea_query_vars( $vars ) {
    $vars[] = 'address';
    $vars[] = 'miles';    
    return $vars;
}

add_action( 'generate_rewrite_rules', 'my_rewrite_rules' );
function ,y_rewrite_rules( $wp_rewrite )
{
    $wp_rewrite->rules = array(
        'search-listings/listing/address/?([^/]*)/?$' => $wp_rewrite->index . '?pagename=search-listings&address=' . $wp_rewrite->preg_index( 1 ),
        'search-listings/listing/miles/?([0-9]{1,})/?$' => $wp_rewrite->index . '?pagename=search-listings&miles=' . $wp_rewrite->preg_index( 1 )       
    ) + $wp_rewrite->rules;
}

你将在get_query_var('address')和get_query_var('miles')中找到你的变种;