TechBlogSD - Все для WordPress и WEB разработки
WEB и WordPress инструкции, новости, обзоры тем и плагинов

Шорткод недавно просмотренных продуктов WooCommerce

105

Несколько дней назад команда WooThemes анонсировала версию 2 очень популярного плагина WooCommerce, который позволяет каждому веб-сайту WordPress очень легко продавать любые продукты. Даже если я привык работать с потрясающим плагином Easy Digital Downloads, созданным очень талантливым Пиппином Уильямсоном., Я хотел углубиться в WooCommerce и показать вам, как можно использовать существующие функции для создания новых функций. И сегодня я хотел бы объяснить вам, как создать шорткод, отображающий недавно просмотренные товары. Недавно просмотренные продукты – это невероятно мощная функция просто потому, что для меня это своего рода очень простой искусственный интеллект. Это позволяет пользователям легко вернуться к товарам, которые они уже просматривали, всего за несколько секунд. А использование шорткода для отображения недавно просмотренных товаров – это замечательно, потому что вы можете разместить его везде на своем веб-сайте.

Обычно, когда я создаю учебник по WPexplorer, я шаг за шагом объясняю метод, но, поскольку сегодняшний урок немного длиннее, я предпочитаю объяснить весь процесс, а затем предоставить вам полный код с комментариями непосредственно в коде.

Делаем это в шорткоде

Итак, мы собираемся создать плагин, который будет регистрировать шорткод [woocommerce_recently_viewed_products per_page = “5 ″]. Зачем создавать плагин? Потому что это самый простой способ сохранить функцию, которую можно использовать с любой темой. Если вы решите зарегистрировать шорткод в теме, шорткод будет доступен только в том случае, если тема активирована. Независимо от того, какую тему вы используете, плагин будет по-прежнему доступен. Еще одна очень важная вещь: вы никогда не должны изменять файлы WooCommerce.

Вы любите печенье? Я действительно так делаю!

По умолчанию WooCommerce создает файл cookie, в котором хранятся важные данные о том, что посетитель делает и видит в магазине. И это именно тот тип данных, который нам нужен для создания нашего плагина. Наиболее важные данные, которые нам нужны, хранятся в файлах cookie, называемых $ _COOKIE [‘woocommerce_recently_viewed’]. В основном этот файл cookie хранит идентификаторы последних просмотренных продуктов. Поскольку WooCommerce уже сохраняет эти идентификаторы, наша задача, наконец, создать хороший запрос с использованием атрибута запроса «post__in» и убедиться, что товары, которые нам нужно отображать, все еще есть в наличии. Для этого нам нужно использовать метод $ woocommerce-> query-> stock_status_meta_query() в атрибуте запроса «meta_query ».

Полный код плагина

Поскольку код довольно прост, я добавил комментарии прямо в код, и я не делал пошаговое руководство, но если что-то неясно, напишите комментарий, и я буду более чем счастлив объяснить вам каждый часть кода!

<?php /* Plugin Name: WooCommerce - Recently Viewed Products Plugin URL: http://remicorson.com/ Description: Adds a "recently viewed products" shortcode Version: 1.0 Author: Remi Corson Author URI: http://remicorson.com Contributors: corsonr Text Domain: rc_wc_rvp Domain Path: languages */ /** * Register the [woocommerce_recently_viewed_products per_page="5"] shortcode * * This shortcode displays recently viewed products using WooCommerce default cookie * It only has one parameter "per_page" to choose number of items to show * * @access public * @since 1.0 * @return $content */ function rc_woocommerce_recently_viewed_products( $atts, $content = null) { // Get shortcode parameters extract(shortcode_atts(array( "per_page" => '5' ), $atts)); // Get WooCommerce Global global $woocommerce; // Get recently viewed product cookies data $viewed_products =! empty( $_COOKIE['woocommerce_recently_viewed'] )? (array) explode( '|', $_COOKIE['woocommerce_recently_viewed'] ): array(); $viewed_products = array_filter( array_map( 'absint', $viewed_products) ); // If no data, quit if (empty( $viewed_products) ) return __( 'You have not viewed any product yet!', 'rc_wc_rvp' ); // Create the object ob_start(); // Get products per page if( !isset( $per_page )? $number = 5: $number = $per_page) // Create query arguments array $query_args = array( 'posts_per_page' => $number, 'no_found_rows' => 1, 'post_status' => 'publish', 'post_type' => 'product', 'post__in' => $viewed_products, 'orderby' => 'rand' ); // Add meta_query to query args $query_args['meta_query'] = array(); // Check products stock status $query_args['meta_query'][] = $woocommerce->query->stock_status_meta_query(); // Create a new query $r = new WP_Query($query_args); // If query return results if ($r->have_posts()) { $content = '<ul class="rc_wc_rvp_product_list_widget">'; // Start the loop while ($r->have_posts()) { $r->the_post(); global $product; $content .= '<li> <a href="'. get_permalink(). '"> '. (has_post_thumbnail()? get_the_post_thumbnail( $r->post->ID, 'shop_thumbnail' ): woocommerce_placeholder_img( 'shop_thumbnail') ). ' '. get_the_title(). ' </a> '. $product->get_price_html(). ' </li>'; } $content .= '</ul>'; } // Get clean object $content .= ob_get_clean(); // Return whole content return $content; } // Register the shortcode add_shortcode("woocommerce_recently_viewed_products", "rc_woocommerce_recently_viewed_products");

Источник записи: https://www.wpexplorer.com

Leave A Reply

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. ПринимаюПодробнее