Структура постоянной ссылки для моего custom_post_typePhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Структура постоянной ссылки для моего custom_post_type

Сообщение Anonymous »

У меня есть «галерея» как custom_post_type и «альбомы» как таксономия_имя.

Как мне добиться такой структуры:
mydomain.com/gallery/albums /{taxonomy_term}/{post}

Я пробовал что-то вроде примера ниже, но это не сработало или, возможно, я использовал его неправильно

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');
function mmp_rewrite_rules($rules) {
$newRules = array();
$newRules['basename/(.+)/(.+)/(.+)/?$'] = 'index.php?gallery=$matches[3]'; // my custom structure will always have the post name as the 4th uri segment
$newRules['basename/(.+)/?$'] = 'index.php?albums=$matches[1]';

return array_merge($newRules, $rules);
}

function filter_post_type_link($link, $post)
{
if ($post->post_type != 'gallery')
return $link;

if ($cats = get_the_terms($post->ID, 'albums'))
{
$link = str_replace('%albums%', get_taxonomy_parents(array_pop($cats)->term_id, 'albums', false, '/', true), $link); // see custom function defined below
}
return $link;
}
add_filter('post_type_link', 'filter_post_type_link', 10, 2);

function get_taxonomy_parents($id, $taxonomy, $link = false, $separator = '/', $nicename = false, $visited = array()) {
$chain = '';
$parent = &get_term($id, $taxonomy);

if (is_wp_error($parent)) {
return $parent;
}

if ($nicename)
$name = $parent -> slug;
else
$name = $parent -> name;

if ($parent -> parent && ($parent -> parent != $parent -> term_id) && !in_array($parent -> parent, $visited)) {
$visited[] = $parent -> parent;
$chain .= get_taxonomy_parents($parent -> parent, $taxonomy, $link, $separator, $nicename, $visited);

}

if ($link) {
// nothing, can't get this working :(
} else
$chain .= $name . $separator;
return $chain;
}


Подробнее здесь: https://stackoverflow.com/questions/334 ... -post-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»