0

wordpress (バージョン 3.3) を変更して、1 つのカテゴリと 1 つの分類法で投稿を一覧表示しようとしています。

「場所」という分類法があります。example.org/location/canada を実行すると、機能します。今、example.org/location/canada/category/dogs の URL を書き換えたいのですが、達成できません。

functions.php に次のコードを追加しました。

関数 eg_add_rewrite_rules() { global $wp_rewrite;

$new_rules = array(
    'location/(.+)/category/(.+)/?$' => 'index.php?location=' . $wp_rewrite->preg_index(1) . '&category_name=' . $wp_rewrite->preg_index(2)
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;

} add_action( 'generate_rewrite_rules', 'eg_add_rewrite_rules' );

また、私はこれを追加しました:

function eg_add_query_vars( $query_vars ) { $new_vars = array( 'location' );

return array_merge( $new_vars, $query_vars );

} add_filter( 'query_vars', 'eg_add_query_vars' );

4

2 に答える 2

0

問題が解決しました:

functions.php (または必要に応じてプラグイン) 内。

この URL www.example.org/en/[mylocation]/de/[mycategory] ​​を書き換えるには、このコードを入力する必要があります。

  add_action('init', 'flush_rewrite_rules'); 
  add_filter('category_rewrite_rules' , 'add_rules' ) ;  

  function flush_rules() {

    global $wp_rewrite;
    $wp_rewrite->flush_rules();

  }

  function add_rules($rules) 
  {
    /**
     * Loop em.
     * -------------------------------------------- */    

    $feed_rule  = 'index.php?location=$matches[1]&category_name=$matches[2]&feed=$matches[3]';
    $paged_rule = 'index.php?location=$matches[1]&category_name=$matches[2]&paged=$matches[3]';
    $base_rule  = 'index.php?location=$matches[1]&category_name=$matches[2]';

    $rules['en/([^/]+)/de/([^/]+)/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = $feed_rule;
    $rules['en/([^/]+)/de/([^/]+)/page/?([0-9]{1,})/?$']                  = $paged_rule;
    $rules['en/([^/]+)/de/([^/]+)/?$']                                    = $base_rule;

    $feed_rule2  = 'index.php?location=$matches[1]&feed=$matches[2]';
    $paged_rule2 = 'index.php?location=$matches[1]&paged=$matches[2]';
    $base_rule2  = 'index.php?location=$matches[1]';

    $rules['en/([^/]+)/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = $feed_rule2;
    $rules['en/([^/]+)/page/?([0-9]{1,})/?$']                  = $paged_rule2;
    $rules['en/([^/]+)/?$']                                  = $base_rule2;


    return $rules;

  }
于 2012-09-11T10:07:57.877 に答える
0

カテゴリは分類法です。したがって、そこで使用する分類法によって異なります。タグ、カテゴリ、カスタム分類。

カスタム分類法を作成したい場合は、作成できます。http://codex.wordpress.org/Taxonomiesをご覧ください

カスタム分類法を登録する例を次に示します。

function people_init() {
// create a new taxonomy
register_taxonomy(
    'people',
    'post',
    array(
        'label' => __( 'People' ),
        'rewrite' => array( 'slug' => 'person' ),
        'capabilities' => array('assign_terms'=>'edit_guides', 'edit_terms'=>'publish_guides')
    )
);
   } add_action( 'init', 'people_init' );

次に、パーマリンクを編集する必要があります。設定 > パーマリンクに移動します。カスタムを使用して、パスの表示方法を反映するように URL を変更します。

必要に応じて、ここにカテゴリとタグの URL のカスタム構造を入力できます。たとえば、トピックをカテゴリ ベースとして使用すると、カテゴリ リンクはhttp://example.org/topics/uncategorized/のようになります。これらを空白のままにすると、デフォルトが使用されます。

于 2012-09-10T13:54:05.127 に答える