- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте. Может кто подскажет как вывести похожие товары woocommerce в виде списка ссылок на 404 странице удаленного товара? которого нет в наличии. Похожие товары наверно должны как то подбираться по название ссылки, ссылка на кирилице названия товара. Или это делается как то иначе?
Если нет решения в админке темы, то...
related.php отвечает в Woocommerce за вывод похожих продуктов (лежит в репозитории плагина). Открываешь шаблон 404 страницы своей темы, и вставляешь код из related.php в него. И будет тебе счастье.
Нашел такой вариант, но товары не выводит, выводит только статьи блога, может подскажете что подправить?
Создадим несколько вспомогательных функций. Их можно объявить в файле functions.php вашей темы или непосредственно в начале файла 404.php.
function frl_get_requested_slug(){
global $wp;
$q = $wp->request;
$q = preg_replace("/(.*)(html|htm|php|asp|aspx)$/","",$q);
$parts = explode('/', $q);
$q = end($parts);
return $q;
}
Функция frl_get_requested_slug возвращает содержание запрошенного URL, используя глобальную переменную $wp и регулярное выражение. Предполагается, что сайт использует постоянные ссылки.
function frl_list_posts($posts){
if(empty($posts))
return '';
$list = array();
foreach($posts as $cpost) {
$title = apply_filters('the_title', $cpost->post_title);
$url = get_permalink($cpost);
$list[] = "<li><a href='{$url}'>{$title}</a></li>";
}
return implode('', $list);
}
Функция frl_list_posts помогает быстро вывести список ссылок на записи, в качестве аргумента — массив объектов WP_Post.
function frl_load_error_style(){
if(!is_404())
return;
$src = get_template_directory_uri().'/css/error-style.css';
wp_enqueue_style('error-style', $src);
}
Функция frl_load_error_style загружает стили для шаблона 404 страницы, .css файл находится в подпапке /css директории вашей темы.
Код шаблона будет состоять из 4 частей: сообщение об ошибке, поиск, свежие записи, контактная информация и форма поиска.
Сообщение об ошибках:
<!-- Message -->
<h2>404: Page not found</h2>
<div class="message not-found">
<p>Sorry, unfortunately, we could not find the requested page.</p>
<p>Let's find the information you need.</p>
</div>
Поиск похожих записей:
<!-- Did you mean -->
<?php
$q = frl_get_requested_slug();
$args = array(
'post_type' => 'any',
'post_status' => 'publish',
'name' => $q,
'posts_per_page' => 5
);
$query = new WP_Query($args); //query posts by slug
if(empty($query->posts)){ //search for posts
$q = str_replace('-', ' ', $q);
$args = array(
'post_type' => 'any',
'post_status' => 'publish',
's' => $q,
'posts_per_page' => 5
);
$query->query($args);
}
if(!empty($query->posts)):
?>
<h4>Were you looking for the one of the following pages?</h4>
<ul class="posts-list">
<?php echo frl_list_posts($query->posts);?>
</ul>
<?php endif;?>
Свежие записи:
<!-- Recent content -->
<?php
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 5
);
$query->query($args);
if(!empty($query->posts)):
?>
<h4>Why not take a look through the most recent posts?</h4>
<ul class="posts-list">
<?php echo frl_list_posts($query->posts);?>
</ul>
<?php endif;?>
Контактные данные и форма для поиска:
<!-- Search options -->
<?php $home_link = home_url(); ?>
<h4>No good?</h4>
<p>Please use the search form to try again or start browsing from the <a href='<?php echo $home_link;?>'>Homepage</a>.</p>
<p>If you need further assistance please don't hesitate to contact at <em>info@domain.com</em>.</p>
<?php get_search_form();?>
Если нет решения в админке темы, то...
related.php отвечает в Woocommerce за вывод похожих продуктов (лежит в репозитории плагина). Открываешь шаблон 404 страницы своей темы, и вставляешь код из related.php в него. И будет тебе счастье.
Этот вариант не подходит, скорее всего потому, что похожие страницы подбираются по тайтлу, категории или меткам - как-то так. На 404-ой, есть только урл, по которому можно вести поиск похожих товаров.
Для наглядности кода дублирую предыдущий вопрос.
Нашел такой вариант, но товары не выводит, выводит только статьи блога, может подскажете что подправить?
Создадим несколько вспомогательных функций. Их можно объявить в файле functions.php вашей темы или непосредственно в начале файла 404.php.
function frl_get_requested_slug(){global $wp;
$q = $wp->request;
$q = preg_replace("/(.*)(html|htm|php|asp|aspx)$/","",$q);
$parts = explode('/', $q);
$q = end($parts);
return $q;
}
Функция frl_get_requested_slug возвращает содержание запрошенного URL, используя глобальную переменную $wp и регулярное выражение. Предполагается, что сайт использует постоянные ссылки.
function frl_list_posts($posts){if(empty($posts))
return '';
$list = array();
foreach($posts as $cpost) {
$title = apply_filters('the_title', $cpost->post_title);
$url = get_permalink($cpost);
$list[] = "<li><a href='{$url}'>{$title}</a></li>";
}
return implode('', $list);
}
Функция frl_list_posts помогает быстро вывести список ссылок на записи, в качестве аргумента — массив объектов WP_Post.
function frl_load_error_style(){if(!is_404())
return;
$src = get_template_directory_uri().'/css/error-style.css';
wp_enqueue_style('error-style', $src);
}
Функция frl_load_error_style загружает стили для шаблона 404 страницы, .css файл находится в подпапке /css директории вашей темы.
Код шаблона будет состоять из 4 частей: сообщение об ошибке, поиск, свежие записи, контактная информация и форма поиска.
Сообщение об ошибках:
Поиск похожих записей:
Свежие записи:
Контактные данные и форма для поиска:
artatwjs, чтобы вывеси "похожие" - нужны критерии похожести. А ты ух удалил вместе с товаром.
Единственное что можно сделать в твоём случае - ориентироваться на слаг. Точнее правильно формировать и отталкиваться от него.
Напр. формировать с ключами и/или держать в базе соответствия критериев похожести.
Но ведь 404 может быть и совершенно по произвольным урлу. Что тогда? (вопрос риторический)
Поэтому (и не только поэтому) в нормальных ИМ товар не удалятся. Вообще.
Таким образом ты сам себе создал проблему на ровном месте и потом ищешь костыли её решения.
artatwjs, чтобы вывеси "похожие" - нужны критерии похожести. А ты ух удалил вместе с товаром.
Единственное что можно сделать в твоём случае - ориентироваться на слаг. Точнее правильно формировать и отталкиваться от него.
Напр. формировать с ключами и/или держать в базе соответствия критериев похожести.
Но ведь 404 может быть и совершенно по произвольным урлу. Что тогда? (вопрос риторический)
Поэтому (и не только поэтому) в нормальных ИМ товар не удалятся. Вообще.
Таким образом ты сам себе создал проблему на ровном месте и потом ищешь костыли её решения.
Да, этот слаг и применяется в коде выше, надо только подкорректировать его под вывод товаров, а не записей блога. У меня, к сожалению нет навыков php. Поэтому и прошу подсказки. Я бы с удовольствием оставлял товары, которых нет в наличии, но не позволяет место на диске, так как товаров очень много, поэтому они пока удаляются.
но не позволяет место на диске,
Вот это самый смешной аргумент, который только можно было придумать..
надо только подкорректировать его под вывод товаров, а не записей блога.
Вникать в это лениво, но на вскидку вместо
и
попробуй
ЗЫ. для вставки кода в форум используй ббкод [code][/code] а не php.
Вот это самый смешной аргумент, который только можно было придумать..
Вникать в это лениво, но на вскидку вместо
и
попробуй
ЗЫ. для вставки кода в форум используй ббкод [code][/code] а не php.
Пробовал, не работает.
artatwjs, товар не обязательно удалять. Если товара нет в наличии, можно вывести соответствующее сообщение и предложить похожие варианты.
Да, этот слаг и применяется в коде выше
Не применяется. Насколько я могу судить, функция frl_get_requested_slug() у вас ничего не возвращает.
надо только подкорректировать его под вывод товаров, а не записей блога
---------- Добавлено 25.11.2018 в 12:17 ----------
Для несуществующей страницы только другие несуществующие страницы могут быть related 🤪
artatwjs, товар не обязательно удалять. Если товара нет в наличии, можно вывести соответствующее сообщение и предложить похожие варианты.
Не применяется. Насколько я могу судить, функция frl_get_requested_slug() у вас ничего не возвращает.
---------- Добавлено 25.11.2018 в 12:17 ----------
Для несуществующей страницы только другие несуществующие страницы могут быть related 🤪
Спасибо, работает. Но только он выдает последние опубликованные товары. Подправьте пожалуйста еще похожие товары.
Но только он выдает последние опубликованные товары.
Да, последние опубликованные товары.
Давайте называть вещи своими именами. 404 страница появляется когда по адресу ничего не найдено, т.е. страницы такой не существует. Соответственно, для несуществующей страницы, похожих записей вы не сможете получить т.к. их не существует.