Измените структуру постоянных ссылок в WordPress для использования собственной таксономии - PullRequest
0 голосов
/ 12 мая 2010

Я хочу изменить схему постоянных ссылок на моем WordPress 3.0-beta1 для использования моей новой пользовательской таксономии.

Сегодня я могу использовать /%category%/%postname%/ и URL /my-category/my-post/, это хорошо, но мне нужно использовать другую таксономию вместо "категории".

Я пытался использовать /%acervo%/%postname%/, но мои URL пришли с %acervo% на URL вместо названия " Acevo " (моего названия таксономии), которому принадлежит сообщение.

Я нашел что-то связанное с WP_Rewrite , но без успеха ...

Ответы [ 4 ]

0 голосов
/ 06 октября 2010

Это должно к хитрости.

function acervo_permalink($permalink, $post_id, $leavename){
    if (get_option('permalink_structure') != ''){
        $post = get_post($post_id);
        $rewritecode = array(
            '%acervo%'
        );
        if (strpos($permalink, '%acervo%') !== FALSE){   
            $terms = wp_get_object_terms($post->ID, 'acervo');  
            if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $acervo = $terms[0]->slug;
            else $acervo = '';
        }
        $rewritereplace = array(
            $acervo
        );
        $permalink = str_replace($rewritecode, $rewritereplace, $permalink);
    } 
    return $permalink;
}
0 голосов
/ 13 мая 2010

Просто измените свою базу категорий в Dashboard/Settings/Permalinks Нет необходимости избавляться от базы категорий, а затем добавьте ее снова.

0 голосов
/ 16 мая 2010

Понятно ... Изменила структуру постоянных ссылок на /%acervos%/%postname%/, затем погрузилась в WP_Rewrite и добавила новый "тег замены", заменив %acervos% на (.*) regexp.

0 голосов
/ 12 мая 2010

Вы можете попробовать использовать плагин WordPress, Нет базы категорий , а затем жестко закодировать таксономию с помощью подстановочного знака postname, например так:

/acervo/%postname%/

Обратите внимание, что acervo не имеет знаков процента, поскольку он "жестко запрограммирован", а не подстановочный знак.

...