Как использовать разное краткое описание на странице магазина и на странице товара в WooCommerce
Я хочу, чтобы фраза "Свяжитесь с нами для уточнения цен" отображалась только на странице товара, а не на странице магазина. Посмотрите пример на этой странице: http://www.kepaweleurope.com/shop/soutien-mamoplastia-85/
Может ли кто-нибудь помочь?
Заранее спасибо, Мигель
Шаблон краткого описания находится в /templates/single-product/short-description.php :
<?php
/**
* Краткое описание товара
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 1.6.4
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Выход, если доступ осуществляется напрямую
global $post;
if ( ! $post->post_excerpt ) return;
?>
<div itemprop="description">
<?php echo apply_filters( 'woocommerce_short_description', $post->post_excerpt ) ?>
</div>
Вы можете переопределить этот шаблон (или любой другой шаблон WooCommerce): http://docs.woothemes.com/document/template-structure/ скопировав файл в вашу тему... например woocommerce/single-product/short-description.php
. Затем вы сможете редактировать его по своему усмотрению.
РЕДАКТИРОВАТЬ: Если я правильно понял ваш вопрос, вы можете сделать так:
<?php
/**
* Краткое описание товара
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 1.6.4
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Выход, если доступ осуществляется напрямую
global $post;
?>
<div itemprop="description">
Свяжитесь с нами для уточнения цен Здесь
</div>
Или вы можете использовать фильтр woocommerce_short_description
. Или определить свою функцию woocommerce_template_single_excerpt()
, которая является заменяемой, или полностью удалить её из хука. Существует множество способов сделать это, но переопределение шаблона обычно самое простое для понимания.
РЕДАКТИРОВАТЬ: Вот очень простой пример фильтрации краткого описания (и в целом процесс фильтрации всегда одинаков)
Ещё раз редактирование: этот код нужно добавить в functions.php вашей темы
function wpa_98244_filter_short_description( $desc ){
global $product;
if ( is_single( $product->id ) )
$desc .= ' добавьте дополнительный текст к краткому описанию';
return $desc;
}
add_filter( 'woocommerce_short_description', 'wpa_98244_filter_short_description' );

Привет, Хельга, спасибо за помощь. Давай разберёмся, правильно ли я понял. Самый простой способ — это переопределить. Я сделал это, и теперь думаю, что мне нужно отредактировать файл. Вопрос в том, что именно нужно сделать, чтобы получить желаемый результат? Можешь дать ещё какие-то подсказки? Заранее спасибо, Мигель.

Привет, Хельга. Я вернулся к этому вопросу, так как был занят другим проектом. Спасибо за твою поддержку до сих пор. Мне нужно, чтобы краткое описание было как в стандартной теме WooCommerce (я бы хотел убрать "Entre em contacto connosco para saber preços Aqui"). На странице товара я хочу видеть стандартное краткое описание плюс текст "Entre em contacto connosco para saber preços Aqui" вместо цен, которые я уже удалил. Не уверен, что объяснил достаточно понятно... Заранее спасибо. Мигель

Просто скопируй оригинальный шаблон и добавь "Entre em contacto" к нему. Что именно в моем решении тебе не подходит?

Нет, мне это не подходит, потому что если я использую твое решение, то у меня нет краткого описания на странице товара, а "Entre em contacto" появляется на странице магазина. Мне нужно краткое описание на обеих страницах и "Entre em contacto" только на странице товара. Не знаю, понятно ли объяснил... Заранее спасибо.

Думаю, вам нужно отредактировать свой вопрос или, возможно, задать новый (другой) вопрос. Я ответил на вопрос в том виде, в котором он был изначально задан. К вашему сведению - краткое описание по умолчанию отображается на странице товара, если только ваша тема не изменила это поведение.

Я снова отредактировал свой ответ, чтобы показать, как фильтровать описание вместо редактирования шаблонов.

Хельга, пожалуйста, подскажите, куда мне нужно вставить фильтр внутри краткого описания? Заранее спасибо.

Уважаемая Хельга, я отредактировал файл и внес следующие изменения, но это не работает:<?php /* * Краткое описание товара /
if ( ! defined( 'ABSPATH' ) ) exit; // Выход, если доступ осуществляется напрямую global $post; if ( ! $post->post_excerpt ) return; ?> <div itemprop="description"> function wpa_98244_filter_short_description( $desc ){ global $product; if ( is_single( $product->id ) ) $desc .= ' добавьте дополнительный текст к краткому описанию'; return $desc; } add_filter( 'woocommerce_short_description', 'wpa_98244_filter_short_description' ); </div>

Вы также можете использовать этот код для работы с базой данных WordPress на странице товара. В этом коде вы можете указать собственное краткое описание. Я также использовал условие. Вы можете изменить его по своему усмотрению. Этот код нужно поместить в файл function.php вашей темы.
function My_short_description(){
global $post,$wpdb,$woocommerce;
$your_short_description = "Мое описание";
$id = get_the_id();
$prefix = $wpdb->prefix;
$query = $wpdb->get_row("SELECT post_excerpt FROM {$prefix}posts WHERE ID={$id}");
if($query)
{
$woocommerce_page_short_description = $query->post_excerpt;
if($woocommerce_page_short_description=="" && $woocommerce_page_short_description==null)
{
echo $your_short_description;
}
}
}
add_action( 'woocommerce_before_add_to_cart_form', 'My_short_description', 40 );
