It Hints
Search
Close this search box.
Всем при­вет. Сего­дня я рас­ска­жу Вам, как сде­лать вывод снип­пе­тов в отрыв­ках запи­сей и какие под­вод­ные кам­ни меня жда­ли в про­цес­се реа­ли­за­ции дан­ной зада­чи, а заты­ков было много. 

И так — делал я один про­ект, на кото­ром нуж­но было раз­ме­стить мно­го това­ров, но кор­зи­на при этом была не нуж­на, т.е. нуж­но было офор­мить кате­го­рии това­ров так, что­бы ещё до захо­да в товар­ную кар­точ­ку были вид­ны все харак­те­ри­сти­ка това­ра. И я это решил сде­лать вот так:

То есть каж­дая товар­ная кар­точ­ка это отдель­ная запись, для отоб­ра­же­ния товар­ной кар­точ­ки я создал несколь­ко шаб­ло­нов под раз­ные кате­го­рии запи­сей, т.е. если это мас­сив дуба то шаб­лон товар­ной кар­точ­ки один, если МДФ то тоже шаб­лон дру­гой и т.д. Сама же запись хра­нит в себе толь­ко пре­вью това­ра, назва­ние това­ра и про­из­воль­ные поля в кото­рых содер­жат­ся харак­те­ри­ти­ки това­ра, а именно
color — это цвет
fasad — мате­ри­ал фасадов
size — размер
и т.д. все­го око­ло 10 характеристик 

И сто­я­ла боль­шая про­бле­ма, а имен­но — нуж­но было в отры­вок каж­дой запи­си под каж­дый товар заби­вать свой HTML где ука­зы­вать раз­мер, фасад, цену и т.д. и это было во пер­вых очень неудоб­ная и дол­гая рабо­та (това­ров свы­ше 400) и в слу­чае если меня­ет­ся цена нуж­но будет всё пере­би­вать, а так как цена у меня выво­дит­ся тоже снип­пе­та­ми, где счи­та­ет­ся по фор­му­ле так это вооб­ще двой­ная и бес­смыс­лен­ная рабо­та — вби­вать цену кото­рая и так подсчиталась.

И я решил — нуж­но сде­лать вывод снип­пе­тов в отры­вок запи­си. И если для самой запи­си это дела­ет­ся неслож­но, то в отрыв­ках запи­си снип­пе­ты по про­сту не рабо­та­ли. Одна при­чи­на заклю­ча­лась в том, что WordPress в отрыв­ках запи­си режет все ненуж­ные по его мне­нию теги, т.е. чистит код. Вто­рая при­чи­на — те снип­пе­ты кото­рые рабо­та­ют в самой запи­си не рабо­та­ют в отрыв­ках, ско­рее все­го это свя­за­но с некор­рект­ной обра­бот­кой get_the_ID() в отрыв­ках запи­си имен­но при выво­де категории.

Пер­вая про­бле­ма реша­ет­ся лег­ко — ста­вим пла­гин Advanced Excerpt и в его настрой­ках ста­вим галоч­ку “Don’t remove any tags” — т.е. не уда­лять любые теги, то со вто­рой про­бле­мой лич­но мне при­шлось сми­рить­ся, т.к. я не нашел спо­со­ба её побо­роть и решил пере­да­вать id запи­си в каче­стве аргу­мен­та. У меня полу­чи­лось следующее 
К при­ме­ру что­бы выве­сти раз­ме­ры я напи­сал вот так: 
add_shortcode( 'currentsize', 'sizid' );
function sizid( $atts ){
    $atts = shortcode_atts( array(
        'sizid' => 'Индивидуально',
    ), $atts, 'currentsize' );
    return get_post_meta($atts['sizid'], 'size', 1);
}
А сам шорт­код в этом слу­чае выгля­дит так [currentsize sizid=3063] где 3063 это id запи­си. В самой же запи­си инфор­ма­ция о раз­ме­ре хра­нит­ся в запи­си size 
Вывод фаса­да по ана­ло­гии у меня полу­чил­ся вот так: 
add_shortcode( 'currentfasad', 'fasid' );
function fasid( $atts ){
    $atts = shortcode_atts( array(
        'fasid' => 'Индивидуально',
    ), $atts, 'currentfasad' );
    return get_post_meta($atts['fasid'], 'fasad', 1);
}
А сам шорт­код в этом слу­чае выгля­дит так [currentfasad fasid=3063]. В самой же запи­си инфор­ма­ция о фаса­де хра­нит­ся в запи­си fasad 
Так же я выво­жу про­из­воль­ные поля, кото­рые хра­нят­ся в опре­де­лен­ной запи­си — к при­ме­ру запись с id=1 у меня обыч­но настрой­ки сай­та, то вывод из этой запи­си выгля­дит вот так: 
add_shortcode('metr_mdf', function() {
	return number_format_i18n( get_post_meta(1, 'metr_mdf', 1), 0 );
});
Дан­ный шорт­код выво­дит отфор­ма­ти­ро­ван­ное чис­ло (сто­и­мость). Содер­жи­мое про­из­воль­но­го поля metr_mdf из запи­си с id=1. number_format_i18n фор­ма­ти­ру­ет чис­ло, 0 зна­ков после запя­той, если хоти­те что­бы было со зна­ка­ми после запя­той изме­ни­те 0 к при­ме­ру на 2 (будет с копейками) 

И это отлич­но сра­бо­та­ло в запи­си типа Page, т.е. я взял, сде­лал глав­ную стра­ни­цу, раз­ме­стил в ней вывод запи­сей Posts, задал руб­ри­ку из кото­рой брать запи­си и оно всё отлич­но выводится.

Я доволь­ный резуль­та­том, решил таким же обра­зом сде­лать шаб­лон кате­го­рий и раз­ме­стить в нём Archive Posts, но тут меня жда­ла неуда­ча — по ана­ло­гии оно не сра­бо­та­ло, т.е. содер­жи­мое снип­пе­тов не выво­ди­лось, выво­ди­лись сами назва­ния снип­пе­тов, типа [currentfasad fasid=3063] и это меня наво­ди­ло на мысль что снип­пе­ты поче­му то не отра­ба­ты­ва­ют­ся. Бил­ся я над про­бле­мой весь вечер и до позд­ней ночи, так не нашёл реше­ние и решил — девать­ся не куда, наде­лаю для каж­дой кате­го­рии запи­сей типа Page (там же у меня всё полу­чи­лось),  раз­ме­щу там вывод запи­сей Posts, задам каж­дой нуж­ную руб­ри­ку. От шаб­ло­на кате­го­рий при­шлось отка­зать­ся, на вся­кий слу­чай напи­сал о сво­ей про­бле­ме в форум по WordPress’у и утром при­шел ответ.

add_filter('the_excerpt', 'do_shortcode');
Дан­ную запись встав­ля­ем в файл function.php вашей темы и всё работает. 

Искренне не пони­маю поче­му же это тогда рабо­та­ло на стра­ни­цах и не рабо­та­ло в кате­го­ри­ях ? Я же раз­ре­шил все теги — по всей види­мо­сти это­го было мало.

Ну в общем вот и всё, вре­мя 1:12 ночи, пой­ду я пожа­луй спать. Наде­юсь это кому то помогло.

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

Facebook
Twitter
Email
VK
WhatsApp
Telegram