用这种方式列出帖子“domain.com/taxonomy/category

时间:2012-09-10 12:39:33

标签: wordpress url-rewriting

我正在试图修改wordpress(版本3.3)以列出一个类别和一个分类法的帖子。

我有一个名为“location”的分类。如果我做example.org/location/canada,它可以工作。现在我想要url重写example.org/location/canada/category/dogs,但我无法实现它。

我在functions.php中添加了这段代码:

function eg_add_rewrite_rules(){     全球$ 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');

2 个答案:

答案 0 :(得分: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以反映您希望路径显示的方式。

如果您愿意,可以在此输入您的类别和标记网址的自定义结构。例如,使用主题作为类别库会使您的类别链接如http://example.org/topics/uncategorized/。如果将这些留空,则将使用默认值。

答案 1 :(得分:0)

问题解决了:

在functions.php中(如果需要,可以在插件中)。

您必须使用此代码重写此网址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;

  }