以固定链接重写帖子的自定义分类在页面上给出了404

时间:2014-12-01 作者:Benjamin Böhm

因此,我有一个自定义分类法(称为“版本”),用于posts wich工作正常。。我的问题是,我想在我的永久收入中使用这种税,例如URL.com/12-3/cat/postname.. 这对posts 当我使用/%version%/%category%/%postname%/对于permalinks。

但现在每pages 向我抛出404错误。。(例如URL.com/test->404)。如果我删除/%version% 很好用。。但只是为了书页。。但是我需要在URL中为帖子添加版本税。。下面的代码用于permalinks中的税务段塞:

add_filter(\'post_link\', \'version_permalink\', 10, 3);
function version_permalink($permalink, $post_id, $leavename) {
    if (strpos($permalink, \'%version%\') === FALSE) {
        return $permalink;
    } else {

        // Get post
        $post = get_post($post_id);
        if (!$post || \'page\' === $post->post_type) return $permalink;

        // Get taxonomy terms
        $terms = wp_get_object_terms($post->ID, \'version\');
        if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) {
            $taxonomy_slug = $terms[0]->slug;
        } else { $taxonomy_slug = \'no-version\'; }

        return str_replace(\'%version%\', $taxonomy_slug, $permalink);
    }
}
我想我犯了一些我不知道的愚蠢错误。。当我看到var\\u转储时(wp美元);它向我显示了例如(对于URL.com/impressum):

["query_vars"]=>
  array(1) {
    ["version"]=>
    string(9) "impressum"
  }
  ["query_string"]=>
  string(17) "version=impressum"
  ["request"]=>
  string(9) "impressum"
  ["matched_rule"]=>
  string(10) "([^/]+)/?$"
  ["matched_query"]=>
  string(17) "version=impressum"
  ["did_permalink"]=>
  bool(true)
因此“version“thingy刚刚注册postspages 但它仍在查找。。。我没有任何线索来解决这个问题,非常感谢您的帮助或更多见解:-)

仅供参考自定义分类法:

add_action(\'init\', \'version_init\');
function version_init() {
    if (!is_taxonomy(\'version\')) {
        $labels = array(
            \'name\'                       => __( \'Versionen\'),
            \'singular_name\'              => __( \'Version\'),
            \'search_items\'               => __( \'Versionen suchen\' ),
            \'popular_items\'              => __( \'Oft genutzte Versionen\' ),
            \'all_items\'                  => __( \'Alle Versionen\' ),
            \'parent_item\'                => null,
            \'parent_item_colon\'          => null,
            \'edit_item\'                  => __( \'Version bearbeiten\' ),
            \'update_item\'                => __( \'Version aktualisieren\' ),
            \'add_new_item\'               => __( \'Neue Version hinzufuegen\' ),
            \'new_item_name\'              => __( \'Neue Version hinzufuegen\' ),
            \'add_or_remove_items\'        => __( \'Version hinzufuegen oder bearbeiten\' ),
            \'choose_from_most_used\'      => __( \'Die meistgenutzte Versionen aussuchen\' ),
            \'not_found\'                  => __( \'Keine Versionen gefunden.\' ),
            \'menu_name\'                  => __( \'Versionen\' ),
        );
        $rewrite = array(
            \'slug\'                       => \'\',
            \'with_front\'                 => false,
            \'hierarchical\'               => false,
        );
        register_taxonomy( \'version\', \'post\',
                          array(
                              \'hierarchical\' => TRUE,
                              \'labels\' => $labels,
                              \'public\' => TRUE,
                              \'show_ui\' => TRUE,
                              \'show_admin_column\' => TRUE,
                              \'update_count_callback\' => \'_update_post_term_count\',
                              \'query_var\' => \'version\',
                              \'rewrite\' => $rewrite
                          )
                         );
    }
}

1 个回复
SO网友:Benjamin Böhm

好了,我现在开始工作了。。我想它不是很干净,但对我来说很管用。。

首先我修复了丢失的slug$rewrite 对于register_taxonomy 但这不是真正的问题。。

因为我首先得到(并且需要)动态值,所以我为我的页面创建了一个空的虚拟父页面,我想显示并将它们放入其中。我叫它content. (我本可以手动更改永久链接,但..我没有)现在添加了一个新的重写规则,让页面使用正确的查询字符串

.

function funny_unicorn_rewrite_rules() {
    add_rewrite_rule(
        \'^content/([^/]*)/?$\', // use "content" as prefix to identify my pages
        \'index.php?pagename=content%2F$matches[1]\', // fix the query string
        \'top\'
    );
}
add_action(\'init\',\'funny_unicorn_rewrite_rules\');
为了实现这一点,我需要使用content%2F 就在$matches[1]

当然我flushed the rewrite rules 进行更改后。。

所以剩下的唯一一件事。。它不适用于WPML.. 当我得到修复,以及我会更新这篇文章!

干杯

结束

相关推荐

Custom permalinks structure

我希望有这样的结构:www.mysite.com/2013 (必须显示2013年的所有职位)www.mysite.com/my-category/2013 (必须显示2013年和“我的类别”类别的所有帖子)www.mysite.com/my-category/my-tag/ (必须显示所有类别为“我的类别”和标记为“我的标记”的帖子)www.mysite.com/my-category/ (必须显示“我的类别”类别的所有帖子)www.mysite.com/my-