使用自定义插件重写url并使用固定链接

时间:2014-12-26 11:28:31

标签: wordpress

我开发了插件并使用短代码来显示。

因此,有两种类型的项目可以显示,如

如果在网址中获取标题,则显示单个项目,如果不是所有项目,那么我已添加到if else状态。

所以对于那个头衔,我已经通过了

add_query_arg( array('title' =>sanitize_title($data->get_title())), get_permalink($post_id) );   

现在url是由domain.com/post-slug/?title=nameoftitle生成的

但我想像domain.com/post-slug/nameoftitle

那样的网址

我尝试过以下代码但没有工作

function update_rewrite_rules() {

    add_rewrite_tag( '%title%', '([^/]*)' );
    add_rewrite_rule(
            $newVarRegex,
            'index.php?pagename=$matches[1]&title=$matches[2]',
            'top'
        );
}
 add_action( 'init', 'update_rewrite_rules' );

但它不起作用

1 个答案:

答案 0 :(得分:1)

我得到了它的解决方案。工作代码是:

function js_update_rewrite_rules() {

    add_rewrite_tag( '%title%', '([^/]*)' );

    $rewrite_rules = get_option( 'rewrite_rules' );

    $newVarRegex = '^([^/]*)/title/([^/]*)/?';

    // check if the rule exists
    if ( !isset( $rewrite_rules[$newVarRegex] ) ) {

        add_rewrite_rule(
            $newVarRegex,
            'index.php?pagename=$matches[1]&title=$matches[2]',
            'top'
        );

        flush_rewrite_rules();
    }
}

function js_on_activation() {

    js_update_rewrite_rules();
}
register_activation_hook( __FILE__, 'js_on_activation' );


function js_on_init() {

    js_update_rewrite_rules();
}
add_action( 'init', 'js_on_init' );