Bayrhake
Ответы в темах
-
Форум: WooCommerce
Тема: Фильтр в плагине не срабатываетКак-то так:
Спасибо больше, это помогло.
Форум: WooCommerce
Тема: Фильтр в плагине не срабатываетВозможно, удаляете фильтр ДО ТОГО, как он установлен.
Я тоже так подумал и поэтому пробовал менять приоритеты, но толку нет. Приоритеты же для этого?
Попробуйте повесить remove_filter на хук, срабатывающий позже, чем вызывается соотв. add_filter.
Если приоритеты не для этого, то не подскажете как это сделать?
Если я правильно понял, то этот фильтр устанавливается в includes/wc-core-functions.php
- Ответ изменён 3 года назад пользователем Bayrhake.
Форум: Проблемы и решения
Тема: Шорткод с параметрами и свои функцииСтоило написать на форум и с передачей решил. Надо было объявить глобальными внутри функции шорткода
$post_id
и$arrayfun
.function postshortcode($atts) { global $post_id; global $arrayfun; ob_start(); ?> <div class="postbar"> <?php $post_ids = explode(',', $atts['ids']); if (!$post_ids) echo "<b>Таких записей не нашлось</b><br>"; foreach ( $post_ids as $post_id ) { $arrayfun = myfunction(); // моя функция в файле функций. Возвращает массив arrayfun(): [return $arrayfun;] get_template_part( 'template-parts/templpage'); // мой теплейт шаблона, использующий массив данных из myfunction() } ?> </div> <?php return ob_get_clean(); } add_shortcode( 'myshorcode', 'postshortcode' );
Теперь вопрос о корректности данного кода.
Во всех инструкциях в интернете весь результат шорткода возвращается через
return
. Напримрreturn "<div>результат</div>";
Мне же надо поместить в div результатforeach
, и уже я не очень понимаю такие вещи как буферизация.Я правильно состряпал такою конструкцию или надо как-то иначе?
- Ответ изменён 4 года, 8 месяцев назад пользователем Bayrhake. Причина: иправление - return ob_get_clean();
Форум: Проблемы и решения
Тема: Шорткод с массивом значенийСпасибо, понял.
Форум: Проблемы и решения
Тема: Шорткод с параметрами и свои функцииПо совету с другого ресурса использовать буферизацию и помощи Юрия в другом вопросе я составил такой код
function postshortcode($atts) { ob_start(); ?> <div class="postbar"> <?php $post_ids = explode(',', $atts['ids']); if (!$post_ids) echo "<b>Таких записей не нашлось</b><br>"; foreach ( $post_ids as $post_id ) { $arrayfun = myfunction(); // моя функция в файле функций. Возвращает массив arrayfun(): [return $arrayfun;] get_template_part( 'template-parts/templpage'); // мой теплейт шаблона, использующий массив данных из myfunction() } ?> </div> <?php return ob_get_clean(); } add_shortcode( 'myshorcode', 'postshortcode' );
Но моя функция не видит переданные ей ID.
Пытался прописатьglobal $arrayfun
, но не получилось, куда бы его я его не вставлял.ЧЯДНТ? Куда надо прописать global и надо ли?