已解决自定义添加重写规则和获取字符串

时间:2018-02-22 作者:Guillermo Caballero

我有一个问题,我试图为seo创建干净的URL。但是我没有使用get获取任何参数,这在我的代码中是错误的

add_action( \'init\', \'listing_search_url\' );
  function listing_search_url()
  {
    add_rewrite_tag(\'%type%\', \'([^&]+)\');
    add_rewrite_tag(\'%search_location%\', \'([^&]+)\');
    add_rewrite_rule(
        \'^custom(/([^/]+))?/(/([^/]+))?/?\',
        \'index.php?page_id=23&type=$matches[2]&search_location=$matches[4]\',
        \'top\'
    );
    flush_rewrite_rules();
  }
这项工作,但有错误,所以我只是做了一个改变,工作完美

function wpd_foo_get_param() {
    if( false !== get_query_var( \'search_location\' ) ){
        $_GET[\'search_location\'] = get_query_var( \'search_location\' );
    }
}
add_action( \'parse_query\', \'wpd_foo_get_param\' );
此代码有效

add_action( \'parse_query\', \'listing_get_query_vars\' );
 function listing_get_query_vars() {
     //if you use - _ + on your url the form just recive a space
    if(!empty( get_query_var( \'search_location\' )) ){
        $_GET[\'search_location\'] = str_replace(array(\'-\',\'_\',\'+\'),\' \',get_query_var( \'search_location\' ));
    } 
}

1 个回复
SO网友:Milo

内部重写解析出的值不会在GET, 你必须使用get_query_var(\'search_location\') 相反

如果您有无法编辑的代码GET, 您可以尝试手动设置它们-

function wpd_foo_get_param() {
    if( false !== get_query_var( \'search_location\' ) ){
        $_GET[\'search_location\'] = get_query_var( \'search_location\' );
    }
}
add_action( \'parse_query\', \'wpd_foo_get_param\' );

结束

相关推荐

更改_Terms中的最后一个分隔符

我如何展示the_terms 带逗号和“&;”在最后一个之前示例:标记:书籍、评论和;历史我需要在术语和a之间显示“,”&上学期之前。我使用以下代码来显示the_terms 在单个岗位上:<?php the_terms( $post->ID, \'post_tag\', \'Tags: \', \', \', \' \' ); ?>