2014-12-26 30 views
0

我開發了插件並使用短代碼來顯示。使用自定義插件重寫網址

因此,存在兩種類型的項目,顯示一個類似

如果URL獲得冠軍,顯示單項目,如果不是所有的項目,所以我有別的,如果在條件加入。

因此,對於這個稱號,我已經通過了

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

現在URL由這個產生是domain.com/post-slug/?title=nameoftitle

,但我想網址樣結構域。 COM /後塞/ 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'); 

b它不工作

回答

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');