Изменение add_filter плагина в functions.php шаблона
-
Есть плагин в файле которого есть фильтр:
add_filter(‘the_content’, ‘irp_the_content’, 99999);
function irp_the_content($content) {..}
Который выводить в контенте: «текст, текст, текст»Мне же нужно этот фильтр изменить в functions.php шаблона таким образом что бы текст выводился в div-e:
«<div>текст, текст, текст</div>»
-
Мне же нужно этот фильтр изменить в functions.php шаблона
Не шаблона, а темы. См. ЧАВО/Терминология « WordPress Codex.
таким образом что бы текст выводился в div-e:
Поскольку Вы решили спрятать от нас то, что собственно и формирует «текст, текст, текст» — содержимое функции irp_the_content(), можно дать только самую общую рекомендацию: там, где в теле функции
"текст, текст, текст"
, сделать"<div>текст, текст, текст</div>"
.p.s. Простите, но писать трактат про замещаемые функции, фильтры и прочие различные варианты использования API и трюки в ответ на спрятанную функцию нет ни малейшего желания.
- Ответ изменён 6 лет, 9 месяцев назад пользователем Юрій. Причина: p.s
Без проблем, вот вся функция, это функция плагина «Inline Related Posts (v.2.2.0)»
Просто в самом плагине поправить можно, но если плагин обновится соответственно и модификация пропадет, а в теме она даже после обновления плагина работать будет!add_filter('the_content', 'irp_the_content', 99999); function irp_the_content($content) { global $irp, $post; if($irp->Plugin->isActive(IRP_PLUGINS_INTELLY_RELATED_POSTS_PRO)) { return $content; } $irp->Log->startTime('irp_the_content'); if(!$post || trim($content)=='') { return $content; } if($irp->Options->getPostShown()===FALSE || is_null($irp->Options->getPostShown())) { $irp->Options->initRelatedPostsIds(NULL); $irp->Options->setPostShown(NULL); if($post && isset($post->ID) && is_single($post->ID)) { $irp->Options->setPostShown($post); $args=array('postId'=>$post->ID, 'shuffle'=>TRUE, 'count'=>-1); $ids=$irp->Manager->getRelatedPostsIds($args); $irp->Options->initRelatedPostsIds($ids); //$irp->Log->info('POST ID=%s IS SHOWN, RELATED POSTS=%s', $post->ID, $ids); } } else { $irp->Options->refreshRelatedPostsIds(); } if($irp->Options->isPostShownExcluded()) { $irp->Log->error('TheContent: POST UNDEFINED OR POST EXCLUDED'); return $content; } if(!$irp->Options->isActive() || !$irp->Options->isRewriteActive()) { $irp->Log->error('TheContent: NOT ACTIVE NOT REWRITE ACTIVE'); return $content; } if($irp->Options->isShortcodeUsed()) { $irp->Log->error('TheContent: NOT ACTIVE DUE TO SHORTCODE USED'); return $content; } if(!$irp->Options->hasRelatedPostsIds()) { $irp->Log->error('TheContent: NOT ACTIVE DUE TO WITHOUT RELATED POSTS'); return $content; } $body=$content; /*if(strpos($body, '[irp')!==FALSE) { $irp->Log->error('TheContent: SHORTCODE DETECTED'); $irp->Options->setShortcodeUsed(TRUE); return; }*/ $context=new IRP_HTMLContext(); $irp->Options->setRewriteBoxesWritten(0); $body=$context->execute($body); $irp->Log->pauseTime(); $irp->Log->info('TheContent: BODY SUCCESSULLY CREATED'); //$body=apply_filters('the_content', $body); //$post->post_content=$body; return $body; }
- Ответ изменён 6 лет, 9 месяцев назад пользователем rudoy24.
Отключить в functions.php темы можно простым способом:
remove_filter('the_content', 'irp_the_content', 99999);
А как обратно подключить что бы содержание вывелось в блоке между тегами <div>…</div> ?
- Ответ изменён 6 лет, 9 месяцев назад пользователем rudoy24.
Другое ж дело! 🙂
Количество комментов в функции заставляет задуматься.
Отключить и переподключить — не проблема. И вызвать отдельно от фильтра тоже. Вопрос в том, как отделить «мух от котлет».
Как вариант — вызвать всю эту байду на пустой контент, результат обернуть в div и присобачить к реальному контенту.
Я еще не успел осознать, что этот монстр делает, поэтому могу написать глупость 🙂
По факту он добавляет в контент ссылку перелинковки на другие записи — https://ru.wordpress.org/plugins/intelly-related-posts/
В разные места контента в зависимости от настроек.А нужно что бы эти ссылки выводились между тегами div.
- Ответ изменён 6 лет, 9 месяцев назад пользователем rudoy24.
В разные места контента в зависимости от настроек.
Вот это плохо.
Как бы не пришлось делать свой класс, наследующий irp, и в нем делать функцию, которая формирует это бла-бла-бла. Ждать, что автор этого чудо-кода использовал фильтры, боюсь, не приходится.
Формирование бла-бла-бла находится где-то глубоко, глубже чем $context->execute(), которая его использует.
А он вообще во что-то оборачивает свои добавки к контенту?
Намекаете что проще будет через replace сделать?
Да добавляет уже 1 div, но у него нету класса или id.
А div-ы в контенте могут и другие встречаться!- Ответ изменён 6 лет, 9 месяцев назад пользователем rudoy24.
Намекаете что проще будет через replace сделать?
Ага 🙂
Да добавляет уже 1 div, но у него нету класса или id.
🙁
Зато у него внутри есть
<!-- INLINE RELATED POSTS 1/3 //-->
. Можно ловить div регуляркой по нему. А еще можно включить Display «Powered by» text (and show us some love 🙂 и ловить по текстуInline Related Posts
. Как по мне, то это менее заморочливо, чем создавать класс-наследник (ненавижу ООП).Еще лучше придумал!
В настройках ставим CSS margin-bottom: 666XXX
Чудище порождает<div style="clear:both; margin-top:0em; margin-bottom:666XXX;">
А дальше регуляркой меняем
6666XXX;
на0;" class="irp
Profit!Ок, спасибо, попробую.
- Тема «Изменение add_filter плагина в functions.php шаблона» закрыта для новых ответов.