ksanyok

Помоги исправить код

9 сообщений в этой теме

Всем привет.
Необходимо на определенные категории добавить в магазине кнопку Демоверсии после корзины.

Есть такой код у меня.

// Add demo preview button to single product page 
  
function isa_after_add_to_cart_button() { 
  
    global $post; 
  
    $demoslug = $post->post_name; 
  
     $demourl = get_bloginfo('url').'/preview?theme='.$demoslug.''; 
  
        $demotitle = esc_attr($post->post_title); 
  
    echo '<a href="'.$demourl.'" title="'.$demotitle.'" class="sc-button demo-preview" rel="nofollow" target="_blank">Демо-сайт</a>'; 
  
} 
add_action('woocommerce_after_add_to_cart_button','isa_after_add_to_cart_button');  

Но данный код добавляет кнопку на все товары.

Ранее я делал дурацкий код для того что бы убрать (скрыть) кнопку с ненужных категорий и делал это так:

// Hide shop items for services category 
function services_remove_woocommerce(){ 
    global $product, $post; 
    $target_category = 'services'; 

    // Remove shop items from the Single Product page 
    if ( is_product() ) { 
        $terms = wp_get_post_terms( $post->ID, 'product_cat' ); 
        foreach ( $terms as $term ) $categories***91;***93; = $term->slug; 
        if ( in_array( $target_category, $categories ) ){ 
    ?> 
    <style type="text/css"> 
    a.sc-button.demo-preview { 
    display: none; 
    } 
    </style> 
    <?php 
    } 
    } 
} 
add_action( 'wp_head', 'services_remove_woocommerce' );

Подскажите пожалуйста как просто установить кнопку на некотоыре категории. Кнопку нужно по сути добавить на товар из осного раздела и на его подкатегории.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я охреневаю над задачами. Вы скинули солидный кусок кода, + тут нету полной логики WC это раз. 

Идите на фриланс и платите. Тут Вам никто такое за бесплатно делать не будет 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, kuzovbmw сказал:

Я охреневаю над задачами. Вы скинули солидный кусок кода, + тут нету полной логики WC это раз. 

Идите на фриланс и платите. Тут Вам никто такое за бесплатно делать не будет 

По вашему код из 7 строк это "солидный кусок кода"???

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я так подозреваю что этих 7 строк не хватит на проверку

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По сути эти 7 сторк нужно дополнить. Как я понимаю опираться стоит на 

 $target_category = 'services'; 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
58 минут назад, ksanyok сказал:

По сути эти 7 сторк нужно дополнить. Как я понимаю опираться стоит на 


 $target_category = 'services'; 

Функция проверки поста на принадлежность категории in_category не работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По коду не подскажу, не силен, но попробуйте проверять код ID категории.

Что-то вроде:

if category id=...., то ....

иначе .....

https://wp-kama.ru/function/get_cat_id

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чисто теоретически написал:

function after_cart_btn_add_preview_btn() {
	global $post;
	
	$term = array( 'term_slug_1', 'term_slug_2', 'term_slug_3' );
	
	if ( is_product() && has_term( $term, 'product_cat', $post ) ) {
		$demourl   = home_url() . "/preview?theme={$post->post_name}";
		$demotitle = esc_attr( $post->post_title );
		$class     = 'sc-button demo-preview';
		$link      = '<a href="%s" title="%s" class="%s" rel="nofollow" target="_blank">Демо-сайт</a>';
		
		printf( $link, $demourl, $demotitle, $class );
	}
}

add_action( 'woocommerce_after_add_to_cart_button', 'after_cart_btn_add_preview_btn' );

 

ksanyok понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, campusboy сказал:

Чисто теоретически написал:


function after_cart_btn_add_preview_btn() {
	global $post;
	
	$term = array( 'term_slug_1', 'term_slug_2', 'term_slug_3' );
	
	if ( is_product() && has_term( $term, 'product_cat', $post ) ) {
		$demourl   = home_url() . "/preview?theme={$post->post_name}";
		$demotitle = esc_attr( $post->post_title );
		$class     = 'sc-button demo-preview';
		$link      = '<a href="%s" title="%s" class="%s" rel="nofollow" target="_blank">Демо-сайт</a>';
		
		printf( $link, $demourl, $demotitle, $class );
	}
}

add_action( 'woocommerce_after_add_to_cart_button', 'after_cart_btn_add_preview_btn' );

 

Огромное спасибо. Сработало.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу