Показывать только одну категорию в ЧПУ wordpress
34 сообщения
#5 лет назад
Для записей из стандартной категории Блог понадобилось использовать ЧПУ с категорией - site.com/blog/post-title. В целом же на сайте следующая структура ЧПУ - site.com/post-title. Задача была реализована следующим кодом в function.phpadd_action('init', function()Все работает хорошо, но есть одна проблема. Если использовать ссылку site.com/post-title (вместо site.com/blog/post-title), то запись отображается и без /blog/, а хотелось бы, чтобы происходил редирект на site.com/blog/post-title. Подскажите, как реализовать редирект в коде?
{
add_rewrite_rule('^blog/(+)/?$', 'index.php?name=$matches', 'top');
}, 10, 0);
add_filter('post_link', function($post_link, $post, $leave_name = false, $sample = false)
{
if ( has_category('blog', $post) ) {
$post_link = str_replace('/' . $post->post_name, '/blog/' . $post->post_name, $post_link);
}
return $post_link;
}, 10, 4);
430 сообщений
#5 лет назад
bek03, Как-то так
function redirect($url)
{
$output =
'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">';
$output.='<html><head>';
$output.='<meta http-equiv="content-type" content="text/html; charset=utf-8">';
$output.='<meta http-equiv="refresh" content="0;';
$output.=' url='.$url.'">';
$output.='<link rel="StyleSheet" type="text/css" href="css/style.css">';
$output.='</head>';
$output.='<body>';
$output.='</body></html>';
@header("HTTP/1.0 200 OK"
@header("Content-type: text/html;charset=utf-8"
@header("Cache-Control: no-cache, must-revalidate, max-age=0"
@header("Expires: 0"
@header("Pragma: no-cache"
print $output;
die();
};
Ну "рожи" - правая круглая скобка, естественно
Заголовки можете менять, как угодно
34 сообщения
#5 лет назад
oldbadger, кажется, вы совершенно не поняли суть проблемы. Но за попытку спасибо!
145 сообщений
#5 лет назад
bek03, Что такое blog у вас? Это категория, архив? Если с site.ru/blog/post1 перейти на site.ru/blog - что произойдет? Она будет что-то отдавать?
Нельзя менять формат ссылок через functions.php. Думаю нужно иначе реализовать. Правда пока не понял, что за дичь происходит =)
34 сообщения
#5 лет назад
Blog - это стандартная категория wordpress. Если с site.ru/blog/post1 перейти на site.ru/blog, то будут отображаться список записей в этой рубрике.
205 сообщений
#5 лет назад
Я так понимаю что вам нужно чтобы blog присутствовало только в сингл постах которые относятся к рубрике blog. А посты других категорий выводились просто site.com/post-title
Если так то как вариант создайте кастом пост тайп blog и не мучайтесь с редиректами и реврайтами