- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте!
Сайт надо перевести на WP. И есть определенная структура, которую надо повторить.
Вопрос: есть ли возможность реализовать средствами вордпресса следующую ситуацию:
site.ru/articles/page.html
site.ru/news/page.html
т.е., чтобы в разных категориях были страницы с одинаковыми slug?
Спасибо
Здравствуйте!
Сайт надо перевести на WP. И есть определенная структура, которую надо повторить.
Вопрос: есть ли возможность реализовать средствами вордпресса следующую ситуацию:
site.ru/articles/page.html
site.ru/news/page.html
т.е., чтобы в разных категориях были страницы с одинаковыми slug?
Спасибо
Да. Проблем не будет.
..так-то есть проблема ))
Wordpress не даёт указать одино и то же url страницы в разных категориях.
..так-то есть проблема ))
Wordpress не даёт указать одино и то же url страницы в разных категориях.
Url конечно должны быть разными. Но slug - это не есть url
т.е., чтобы в разных категориях были страницы с одинаковыми slug?
В WordPress slug-и (псевдонимы) для категорий и записей в рамках одного типа должны быть уникальными. Обойти это ограничение сложно. Гораздо проще будет настроить редиект.
Как всё сложно с вами, сударь :)
Не даёт wordpress указать один и тот же postname 2 раза.
Например вот так никак не получается:
site.ru/articles/postname.html
site.ru/news/postname.html
End1, WordPress и дополнения к нему иногда используют выборку категории по slug (https://codex.wordpress.org/Function_Reference/get_category_by_slug). Если будет две категории с одинаковым псевдонимом, то указанная функция будет работать неправильно.
Как всё сложно с вами, сударь :)
Не даёт wordpress указать один и тот же postname 2 раза.
Например вот так никак не получается:
site.ru/articles/postname.html
site.ru/news/postname.html
да я понял Вас, я почему то подумал, что таких ограничений нет в wp. По Вашему вопросу можно сделать следующее
function wp_cpt_unique_post_slug($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug) {
- если это вставить в functions.php, то wp не будет проверять ссылки. Я просто закомментировал те места, где прибавляется суфикс. Нужно конечно сделать все по умному. Сейчас у меня мозгов не хватит. Если у Вас не получится я завтра отпишу как правильно. Постараюсь)if ( in_array( $post_status, array( 'draft', 'pending', 'auto-draft' ) ) )
return $slug;
global $wpdb, $wp_rewrite;
// store slug made by original function
$wp_slug = $slug;
// reset slug to original slug
$slug = $original_slug;
$feeds = $wp_rewrite->feeds;
if ( ! is_array( $feeds ) )
$feeds = array();
$hierarchical_post_types = get_post_types( array('hierarchical' => true) );
if ( 'attachment' == $post_type ) {
// Attachment slugs must be unique across all types.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND ID != %d LIMIT 1";
$post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_ID ) );
if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_attachment_slug', false, $slug ) ) {
$suffix = 2;
do {
$alt_post_name = substr ($slug, 0, (200 - ( strlen( $suffix ) + 1 )) ) . "-$suffix";
$post_name_check = $wpdb->get_var( $wpdb->prepare($check_sql, $alt_post_name, $post_ID ) );
$suffix++;
} while ( $post_name_check );
$slug = $alt_post_name;
}
} elseif ( in_array( $post_type, $hierarchical_post_types ) ) {
if ( 'nav_menu_item' == $post_type )
return $slug;
// Page slugs must be unique within their own trees. Pages are in a separate
// namespace than posts so page slugs are allowed to overlap post slugs.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d AND post_parent = %d LIMIT 1";
$post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_type, $post_ID, $post_parent ) );
if ( $post_name_check || in_array( $slug, $feeds ) || preg_match( "@^($wp_rewrite->pagination_base)?\d+$@", $slug ) || apply_filters( 'wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent ) ) {
// $suffix = 2;
// do {
$alt_post_name = substr( $slug, 0, (200 - ( strlen( $suffix ) + 1 )) );// . "-$suffix";
// $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_type, $post_ID, $post_parent ) );
// $suffix++;
// } while ( $post_name_check );
$slug = $alt_post_name;
}
} else {
// Post slugs must be unique across all posts.
$check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d LIMIT 1";
$post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_type, $post_ID ) );
if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_flat_slug', false, $slug, $post_type ) ) {
// $suffix = 2;
// do {
$alt_post_name = substr( $slug, 0, (200 - ( strlen( $suffix ) + 1 )) );// . "-$suffix";
// $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_type, $post_ID ) );
// $suffix++;
// } while ( $post_name_check );
$slug = $alt_post_name;
}
}
return $slug;
}
add_filter('wp_unique_post_slug', 'wp_cpt_unique_post_slug', 10, 6);
если переносите сайт на вордпресс, то делайте сразу нормально и правильно - задавайте для каждого УРЛ уникальные значения, а старые ссылки свои редиректом направляйте на новый УРЛ. для этого и плагин можно вкинуть, что бы в хтакес не писать кучу правил