artatwjs

Рейтинг
54
Регистрация
17.04.2012
dc9095

Может кто подскажет как реализовать?

Запрограммируйте движок Вашего сайта так, чтобы следующие действия происходили автоматически 1 раз в сутки:

Получить токен доступа с помощью http-запроса методом POST:

POST /Token HTTP/1.1

Host: https://api.ozon.ru/AuthServer

Content-Type: application/x-www-form-urlencoded

grant_type=password&username={Ваша_эл._почта}&password={Ваш_пароль}

Внимание: токен доступа валиден 1 час, рефреш токен - 1.5 часа.

Для обновления токена доступа используйте http-запрос методом POST:

POST /Token HTTP/1.1

Host: https://api.ozon.ru/AuthServer

Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&refresh_token={Полученный_ранее_рефреш_токен}

Здравствуйте. На сайте wordpress настроены постоянные ссылки, подскажите как правильно сделать 301 редирект с базы магазина woocommerce https: //site.ru/shop/ на https: //site.ru так как они идентины. Испоьзуется апач. Все адреса внутри раздела /shop/ должны остаться и обрабатываться как раньше. Пробовал разные варианты происходит зацикливание https ://site.ru/shop/shop/shop/shop/shop/ итд

Проблема решилась установкой плагина WP Translitera, вместо Cyr to Lat enhanced. Почему то ярлык для атрибута он не мог создать, прописывал цифру названия ярлыка одну и туже, поэтому и не мог создать новый атрибут и для всех товаров вставлял один и тот же. Как то так:)

SeVlad:
Это всё написано верно. НО!!
Во первых это написано не про магазины, а во вторых - этого механизма из коробки WC нет. (Думаю, что ни в одном движке ИМ такого нет.)
Ибо никто из нормальных ИМ не отправляет на 404 в таких случаях.

А значит - тебе прямая дорога на фриланс.
Но я уверен, что это тебе обойдется в несколько раз дороже, чем увеличить объём диска (опц: узнать про CDN) и научится оптимизировать графику. Ибо тут будет не только разработка дурацкого функционала, но и дальнейшая борьба с нагрузкой.

АПД. Идея навскидку - в 404ю встроить результаты поиска по слагу. Возможно предварительно обработанные

Вы весь код который я выкладывал смотрели? Там, вроде, и есть не коробочное решение для блога, а я попросил, если это возможно, поправить под магазин WC.

А товары с ИМ удаляются рано или поздно, пример тому ozon.ru. Потому что если хранить все товары, которых уже никогда не будет, со временем в вашем магазине будет сложно найти товар который есть в наличии

mmkulikov:
artatwjs, Примеры урл покажите

---------- Добавлено 25.11.2018 в 20:13 ----------

Хотя чего мучаться. В обычно настроенном WooCommerce в урл нет ничего, что Вам поможет найти "похожие" товары. Вот кусок типового урл .com/product/enrica-crema-25x40/

Максимум, что можете сделать - это рандомно вывести энное количество товаров и назвать их "похожими" или "может вы это искали"...

В урлах содержится много схожей информации похожих товаров, это могут быть, например, разные кастрюли одной фирмы, или какие-нибудь дата-кабели разной длины, и по ним можно формировать похожие товары. К тому же я уже говорил, что есть плагин, который это красиво делает, только отправляет 301 редиректом с 404-ой, а мне посоветовали тут оставлять 404-ую, поэтому он не подходит. Так что этот ваш максимум - вовсе не максимум.

Вот вам урлы:

png url.png
Gerga:
Да, последние опубликованные товары.

Давайте называть вещи своими именами. 404 страница появляется когда по адресу ничего не найдено, т.е. страницы такой не существует. Соответственно, для несуществующей страницы, похожих записей вы не сможете получить т.к. их не существует.

Урл то остается, и по урлу уже определяются похожие записи (я так думаю, может это и не так). Есть плагин такой, но он по 301 редиректу с 404-ой перенаправляет на похожий товар. А мне на форуме написали что лучше 404 страница.

Вот что пишут об этом на сайте где я взял вышеприведенные коды:

Лучшее, что мы можем сделать для посетителя, попавшего на 404 страницу — попытаться определить, что он искал и предложить максимально похожий материал. Информация о запрошенном URL хранится в поле $wp->request. Мы можем распарсить эту строку и попробовать найти похожие записи по данным в post_name. Если это не даст результатов, то можно попробовать обычный поиск по содержимому записей. Если и это не даст результаты, мы всегда можем показать свежие записи в качестве альтернативы.

Gerga:
artatwjs, товар не обязательно удалять. Если товара нет в наличии, можно вывести соответствующее сообщение и предложить похожие варианты.


Не применяется. Насколько я могу судить, функция frl_get_requested_slug() у вас ничего не возвращает.




<!-- Did you mean -->
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 5
);

$query = new WP_Query($args); //query posts by slug

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;?>


---------- Добавлено 25.11.2018 в 12:17 ----------

Для несуществующей страницы только другие несуществующие страницы могут быть related 🤪

Спасибо, работает. Но только он выдает последние опубликованные товары. Подправьте пожалуйста еще похожие товары.

SeVlad:
Вот это самый смешной аргумент, который только можно было придумать..
Вникать в это лениво, но на вскидку вместо
'post_type' => 'post',

и
 'post_type' => 'any',

попробуй
'post_type' => 'product'



ЗЫ. для вставки кода в форум используй ббкод [code][/code] а не php.

Пробовал, не работает.

SeVlad:
artatwjs, чтобы вывеси "похожие" - нужны критерии похожести. А ты ух удалил вместе с товаром.
Единственное что можно сделать в твоём случае - ориентироваться на слаг. Точнее правильно формировать и отталкиваться от него.
Напр. формировать с ключами и/или держать в базе соответствия критериев похожести.
Но ведь 404 может быть и совершенно по произвольным урлу. Что тогда? (вопрос риторический)

Поэтому (и не только поэтому) в нормальных ИМ товар не удалятся. Вообще.

Таким образом ты сам себе создал проблему на ровном месте и потом ищешь костыли её решения.

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

Gogetsky:
Если нет решения в админке темы, то...
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 частей: сообщение об ошибке, поиск, свежие записи, контактная информация и форма поиска.

Сообщение об ошибках:

<!-- 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();?>
Всего: 47