如何在url中嵌入新的字符串?

时间:2013-04-01 作者:Abhimanue Tamang

我正在创建一个自定义旅游和旅游主题,其中我创建了自定义的post类型城市、地点、目的地,并使用自定义permalink结构。/%category%/%postname%/

所以现在我想在城市、目的地或位置名称之前附加一个州名称或地区名称。让我举一个例子来更清楚地说明这一点。

当前的url结构如下所示。http://test.com/custom_post_type_slug/post_name_slug

我希望它是这样的。http://test.com/Custom_dynamic_string/custom_post_type_slug/post_name_slug现在我正在做这样的事情

function add_places_rewrite_tags(){
add_rewrite_tag(\'%district%\',\'([^/]+)\');
}
add_action( \'init\', \'add_places_rewrite_tags\' );

add_action( \'init\', \'custom_rewrite_rules\' );
function custom_rewrite_rules() {
add_rewrite_rule(
    "/([^/]+)/hotel/([^/]+)/?",
    \'index.php?post_type=hotel&district=$matches[1]&p=$matches[2]\',
    \'top\'
);
add_filter( \'query_vars\', \'custom_query_vars\' );
}
function custom_query_vars( $query_vars )
{
   $query_vars[] = \'district\';
   return $query_vars;
}
但它仍然没有给我想要的结果,我也在使用plugin 分析re-wright规则

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

try this

add_filter( \'rewrite_rules_array\',\'my_insert_rewrite_rules\' );
add_filter( \'query_vars\',\'my_insert_query_vars\' );
function my_insert_rewrite_rules( $rules )

{
    $newrules = array();
    $newrules[\'(.+?)/custom_post_type_slug/(.+?)/?$\'] = \'index.php?post_type=custom_post_type_slug&dynamic_string=$matches[1]&custom_post_type_slug=$matches[2]\';
    return $newrules + $rules;
}

function my_insert_query_vars( $vars )
{
    array_push($vars, \'dynamic_string\');
    return $vars;
}
SO网友:Jake

将此添加到函数后。php并根据您的需要对其进行定制,请确保访问管理中的设置>永久链接以刷新重写。

add_action( \'init\', \'custom_rewrite_rules\' );
function custom_rewrite_rules()
{
    add_rewrite_rule(
        "/([^/]*)/custom_post_type_slug/([^/]*)/?",
        \'index.php?post_type=custom_post_type_slug&Custom_dynamic_string=$matches[1]&custom_post_type_slug=$matches[2]\',
        \'top\'
    );

    /**
     * Add the above to Query Vars
     */
    add_filter( \'query_vars\', \'custom_query_vars\' );
}

function custom_query_vars( $query_vars )
{
    $query_vars[] = \'Custom_dynamic_string\';
    return $query_vars;
}
然后,在模板中,可以使用以下函数获取“Custom\\u dynamic\\u string”(或您决定调用它的任何内容)变量:

$custom_dynamic_string = get_query_var(\'Custom_dynamic_string\');

结束

相关推荐

old permalinks not found

通过Google网站管理员工具查看,我有很多404个永久链接结构为/%年%/%月%/%日%/%postname%的帖子/此后,我将永久链接更改为/%类别%/%postname%。html我原以为Wordpress可以将旧的帖子URL重定向到新的帖子URL,但旧的基于日期的URL正在生成404。我的htaccess文件可写,设置为644。为什么会发生这种情况?谢谢