Как использовать разное краткое описание на странице магазина и на странице товара в WooCommerce

3 мая 2013 г., 21:00:42
Просмотры: 18.5K
Голосов: 2

Я хочу, чтобы фраза "Свяжитесь с нами для уточнения цен" отображалась только на странице товара, а не на странице магазина. Посмотрите пример на этой странице: http://www.kepaweleurope.com/shop/soutien-mamoplastia-85/

Может ли кто-нибудь помочь?

Заранее спасибо, Мигель

1
Комментарии

Возможно, стоит попробовать обратиться в поддержку WooCommerce?

Chip Bennett Chip Bennett
3 мая 2013 г. 22:05:34
Все ответы на вопрос 2
14

Шаблон краткого описания находится в /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' );
3 мая 2013 г. 22:21:01
Комментарии

Привет, Хельга, спасибо за помощь.

Miguel Barros Miguel Barros
7 мая 2013 г. 11:54:35

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

Miguel Barros Miguel Barros
7 мая 2013 г. 12:28:10

Проверь мои правки. Иначе уточни свой вопрос.

helgatheviking helgatheviking
8 мая 2013 г. 02:31:03

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

Miguel Barros Miguel Barros
15 мая 2013 г. 13:56:20

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

helgatheviking helgatheviking
15 мая 2013 г. 15:16:06

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

Miguel Barros Miguel Barros
15 мая 2013 г. 17:44:43

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

helgatheviking helgatheviking
15 мая 2013 г. 21:50:08

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

helgatheviking helgatheviking
15 мая 2013 г. 22:12:41

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

Miguel Barros Miguel Barros
17 мая 2013 г. 13:15:07

<div itemprop="description"> Это здесь? </div>

Miguel Barros Miguel Barros
17 мая 2013 г. 17:16:23

Уважаемая Хельга, я отредактировал файл и внес следующие изменения, но это не работает:<?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>

Miguel Barros Miguel Barros
21 мая 2013 г. 18:20:38

Фильтр нужно поместить в файл functions.php вашей темы

helgatheviking helgatheviking
22 мая 2013 г. 06:48:44

Привет, Хельга. Спасибо за поддержку. Все работает отлично.

Miguel Barros Miguel Barros
23 мая 2013 г. 15:15:45

После всего этого не забудьте принять мое решение как ответ.

helgatheviking helgatheviking
24 мая 2013 г. 16:15:00
Показать остальные 9 комментариев
0

Вы также можете использовать этот код для работы с базой данных 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 );
1 мар. 2017 г. 15:17:35