Если все, что вы хотите сделать, это убедиться, что ни одно объявление не отображается, если содержимое короче, чем позволяет ваша функция, просто оберните блок foreach внутри небольшой проверки:
function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
$closing_p = '</p>';
$paragraphs = explode( $closing_p, $content );
if (count($paragraphs) >= $insertion) {
foreach ($paragraphs as $index => $paragraph) {
if ( trim( $paragraph ) ) {
$paragraphs[$index] .= $closing_p;
}
if ( $paragraph_id == $index + 1 ) {
$paragraphs[$index] .= $insertion;
}
}
return implode( '', $paragraphs );
}
return $content;
}
m не уверен, что это было то, что вы планировали делать, но по крайней мере это то, что я интерпретировал:)
Что это такое, в основном проверьте, есть ли у вас больше абзацев, чем нужно для показа объявления, и затем запускает цикл. В противном случае он просто вернет содержимое. Причина его возвращения в том, что prefix_insert_post_ads
имеет последовательное поведение.