/**
* Количество товара в корзине
* @param null $product_id - id продукта не обязательно
* @return int количество товаров в корзине
*/
function wpp_get_product_count_in_cart( $product_id = null ) {
if ( empty( $product_id ) ) {
global $product;
$product_id = $product->id;
}
$wc_cart = WC()->cart;
$product_cart_id = $wc_cart->generate_cart_id( $product_id );
$in_cart = $wc_cart->find_product_in_cart( $product_cart_id );
$cart = $wc_cart->get_cart();
return !empty( $in_cart ) ? $cart[ $in_cart ][ 'quantity' ] : 0;
}
/**
* Регистрация скриптов и стилей
* @see https://developer.wordpress.org/reference/functions/wp_register_script/
* @see https://developer.wordpress.org/reference/functions/wp_register_style/
*/
function my_assets() {
wp_register_script( 'my-script', 'script_link' );
wp_register_style( 'my-style', 'style_link');
}
add_action( 'wp_enqueue_scripts', 'my_assets' );
/**
* Шорткод с нужным содержимым
* @see https://developer.wordpress.org/reference/functions/add_shortcode/
*/
function my_shortcode() {
/**
* Вызов скриптов и стилей которые зарегистрировали раньше
* @see https://developer.wordpress.org/reference/functions/wp_enqueue_script/
* @see https://developer.wordpress.org/reference/functions/wp_enqueue_style/
*
*/
wp_enqueue_script( 'my-script' );
wp_enqueue_style( 'my-style' );
/////////
// СВОЙ КОД
////////
}
add_shortcode( 'my_custom_code', 'my_shortcode' );
<?php
function blog_style() {
if (!is_admin()) {
wp_enqueue_style( 'style', get_template_directory_uri() . '/style.css'; );
}
}
add_action('wp_enqueue_scripts','blog_style' );
<?php
function blog_style() {
wp_enqueue_style( 'style', get_template_directory_uri() . '/style.css'; );
}
add_action('wp_enqueue_scripts','blog_style' );
/**
* Для термина - product_cat
*/
add_filter( 'request', 'change_requerst_vars_for_product_cat' );
add_filter( 'term_link', 'term_link_filter', 10, 3 );
/**
* Для типа постов - product
*/
add_filter( 'post_type_link', 'wpp_remove_slug', 10, 3 );
add_action( 'pre_get_posts', 'wpp_change_request' );
function change_requerst_vars_for_product_cat($vars) {
global $wpdb;
if ( ! empty( $vars[ 'pagename' ] ) || ! empty( $vars[ 'category_name' ] ) || ! empty( $vars[ 'name' ] ) || ! empty( $vars[ 'attachment' ] ) ) {
$slug = ! empty( $vars[ 'pagename' ] ) ? $vars[ 'pagename' ] : ( ! empty( $vars[ 'name' ] ) ? $vars[ 'name' ] : ( ! empty( $vars[ 'category_name' ] ) ? $vars[ 'category_name' ] : $vars[ 'attachment' ] ) );
$exists = $wpdb->get_var( $wpdb->prepare( "SELECT t.term_id FROM $wpdb->terms t LEFT JOIN $wpdb->term_taxonomy tt ON tt.term_id = t.term_id WHERE tt.taxonomy = 'product_cat' AND t.slug = %s", array( $slug ) ) );
if ( $exists ) {
$old_vars = $vars;
$vars = array( 'product_cat' => $slug );
if ( ! empty( $old_vars[ 'paged' ] ) || ! empty( $old_vars[ 'page' ] ) ) {
$vars[ 'paged' ] = ! empty( $old_vars[ 'paged' ] ) ? $old_vars[ 'paged' ] : $old_vars[ 'page' ];
}
if ( ! empty( $old_vars[ 'orderby' ] ) ) {
$vars[ 'orderby' ] = $old_vars[ 'orderby' ];
}
if ( ! empty( $old_vars[ 'order' ] ) ) {
$vars[ 'order' ] = $old_vars[ 'order' ];
}
}
}
return $vars;
}
function term_link_filter( $url, $term, $taxonomy ) {
$url = str_replace( "/product-category/", "/", $url );
return $url;
}
function wpp_remove_slug( $post_link, $post, $name ) {
if ( 'product' != $post->post_type || 'publish' != $post->post_status ) {
return $post_link;
}
$post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
return $post_link;
}
function wpp_change_request( $query ) {
if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query[ 'page' ] ) ) {
return;
}
if ( ! empty( $query->query[ 'name' ] ) ) {
$query->set( 'post_type', array( 'post', 'product', 'page' ) );
}
}
Единственная проблема Wordpress – невозможность работы обмена с большим кол-вом товаров. . Из-за структуры БД.