Wordpress Custom Type постоянная ссылка, содержащая слаг таксономии - PullRequest
6 голосов
/ 11 октября 2011

Я пытаюсь создать шаблон постоянной ссылки для пользовательского типа, который включает одну из его таксономий.Название таксономии известно с самого начала (поэтому я не пытаюсь добавлять или смешивать все его таксономии, только конкретную), но значение будет динамическим, конечно.

Обычно пользовательскийПостоянная ссылка типа строится с использованием аргумента rewrite с параметром slug, но я не вижу, как я мог бы добавить туда динамическую переменную.Я предполагаю, что требуется нестандартное решение, но я не уверен, какой будет лучший ненавязчивый подход.

Есть ли известная практика для этого или кто-то недавно создал нечто подобное?Я использую WP 3.2.1 кстати.

1 Ответ

3 голосов
/ 11 октября 2011

После дополнительных поисков мне удалось создать довольно элегантное решение с использованием фильтра custom_post_link.

Допустим, у вас есть project Пользовательский тип с client Таксономией.Добавьте этот хук:

function custom_post_link($post_link, $id = 0)
{
  $post = get_post($id);

  if(!is_object($post) || $post->post_type != 'project')
  {
    return $post_link;
  }
  $client = 'misc';

  if($terms = wp_get_object_terms($post->ID, 'client'))
  {
    $client = $terms[0]->slug;

    //Replace the query var surrounded by % with the slug of 
    //the first taxonomy it belongs to.
    return str_replace('%client%', $client, $post_link);
  }

  //If all else fails, just return the $post_link.
  return $post_link;
}

add_filter('post_type_link', 'custom_post_link', 1, 3);

Затем, при регистрации пользовательского типа, установите аргумент rewrite следующим образом:

'rewrite' => array('slug' => '%client%')

Я думаю, мне нужно было копать глубже, прежде чем спрашивать, нопо крайней мере, сейчас у нас есть полное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...