想要为广告插入插件添加额外的功能(决定文章中的段落数)


Want to add additional function (of determining number of paragraphs in an article) to ad inserting plugin

我正在使用一个特定于网站的插件在博客文章的段落之间插入广告。该插件工作顺利。它的代码是这样的-

<?php
//Insert ads after second paragraph of single post content.
add_filter( 'the_content', 'prefix_insert_post_ads' );
function prefix_insert_post_ads( $content ) {
$ad_code = '<div>Ads code goes here</div>';
if ( is_single() && ! is_admin() ) {
return prefix_insert_after_paragraph( $ad_code, 2, $content );
}
return $content;
}
// Parent Function that makes the magic happen
function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content) 
{    
$closing_p = '</p>';
$paragraphs = explode( $closing_p, $content );
foreach ($paragraphs as $index => $paragraph) {
if ( trim( $paragraph ) ) {
$paragraphs[$index] .= $closing_p;
}
if ( $paragraph_id == $index + 1 ) {
$paragraphs[$index] .= $insertion;
}
}
return implode( '', $paragraphs );
}`

它运行良好,并显示广告代码,无论它被要求在哪里。

我想在其中添加另一个功能。我想让插件确定帖子中可用的段落数量,并仅在帖子中有最小段落数量(比如10)时显示广告。

简而言之,只有当文章中至少有10段时,插件才能显示广告。如果帖子比这个短,插件就不应该显示广告。

有人能帮我完成这项任务吗?

如有任何帮助,我们将不胜感激。

DOMDocument负责这类事情:

$dom = new 'DOMDocument;
$dom->loadHTML($content);
$paragraphs = $dom->getElementsByTagName('p');
echo $paragraphs->length; // Outputs number of <p> elements

在您的职能范围内:

function prefix_insert_post_ads($content)
{
    $ad_code = '<div>Ads code goes here</div>';
    $dom = new 'DOMDocument;
    $dom->loadHTML($content);
    $paragraphs = $dom->getElementsByTagName('p');
    if (is_single() && !is_admin() && $paragraphs->length > 10 /*more than ten paragraphs*/) {
        return prefix_insert_after_paragraph($ad_code, 2, $content);
    }
    return $content;
}