/*
Plugin Name: Optimized Inline Related Articles v5.0 (Ads Removed)
*/
add_filter('the_content', 'optimized_inline_related_articles_v5', 99);
function optimized_inline_related_articles_v5($content) {
if (!is_single() || !is_main_query()) return $content;
global $post;
$used_posts = [$post->ID];
$paragraphs = explode('
', $content);
$total_paragraphs = count($paragraphs);
if ($total_paragraphs < 6) return $content;
// ------------------------
// TAG BASED RELATED POSTS
// ------------------------
$tags = wp_get_post_tags($post->ID);
if (!$tags) return $content;
$tag_ids = wp_list_pluck($tags, 'term_id');
$related_query = new WP_Query([
'tag__in' => $tag_ids,
'post__not_in' => $used_posts,
'posts_per_page' => 15,
'ignore_sticky_posts' => 1,
]);
$related_posts = [];
if ($related_query->have_posts()) {
while ($related_query->have_posts()) {
$related_query->the_post();
$post_tags = wp_get_post_tags(get_the_ID());
$shared_tags = count(array_intersect($tag_ids, wp_list_pluck($post_tags,'term_id')));
$related_posts[] = [
'id' => get_the_ID(),
'title' => get_the_title(),
'link' => get_permalink(),
'shared_tags' => $shared_tags
];
}
wp_reset_postdata();
}
if (empty($related_posts)) return $content;
usort($related_posts, fn($a,$b) => $b['shared_tags'] - $a['shared_tags']);
// =====================================================
// INLINE INSERT (TOP SECTION)
// =====================================================
$top_positions = [11,15,19];
$count = 0;
foreach($top_positions as $pos){
if(!isset($related_posts[$count])) break;
if($pos >= $total_paragraphs) continue;
$rp = $related_posts[$count];
$inline_html =
"";
$paragraphs[$pos] .= $inline_html;
$count++;
}
// =====================================================
// BOTTOM INSERT (UNCHANGED LOGIC, NO ADS FILTER)
// =====================================================
$bottom_positions = [];
for($i=floor($total_paragraphs*0.45); $i<$total_paragraphs; $i++){
$bottom_positions[] = $i;
}
$max_bottom = min(3, count($related_posts)-$count);
if($max_bottom > 0 && count($bottom_positions) > 0){
$interval = max(1, floor(count($bottom_positions)/$max_bottom));
for($b=0;$b<$max_bottom;$b++){
$pos_index = $b * $interval;
if(!isset($bottom_positions[$pos_index])) break;
$pos = $bottom_positions[$pos_index];
if(!isset($related_posts[$count])) break;
$rp = $related_posts[$count];
$inline_html =
"";
$paragraphs[$pos] .= $inline_html;
$count++;
}
}
return implode('', $paragraphs);
}
Shahid Khaqan Abbasi
Skip to content
News Desk
2017-11-20
Prime Minister Shahid Khaqan Abbasi says the federal government will complete all development projects in Sindh, including Karachi. He was...
News Desk
2017-11-20
Universal Children’s Day is being observed today to promote awareness among children and protection of their rights. This year theme...
News Desk
2017-11-20
KARACHI: Sindh Chief Minister Syed Murad Ali Shah has on Monday called on Prime Minister Shahid Khaqan Abbasi in Governor...
News Desk
2017-11-20
Prime Minister Shahid Khaqan Abbasi has inaugurated the country’s second LNG terminal at Port Qasim in Karachi. Addressing the inaugural...
News Desk
2017-11-20
Prime Minister Shahid Khaqan Abbasi says LNG terminals will help to meet the growing demand of energy as more gas-based...
News Desk
2017-11-20
KARACHI: Prime Minister, Shahid Khaqan Abbasi hasassured Sindh Chief Minister, Syed Murad Ali Shah of all coordination and cooperationin the...
News Desk
2017-11-17
Bill Gates lauds PM Abbasi for his personal attention and oversight in making polio eradication efforts successful. Co-chair of Bill...
News Desk
2017-11-16
Prime Minister Shahid Khaqan Abbasi addresses a meeting on Hajj policy in Islamabad. Prime Minister Shahid Khaqan Abbasi has directed...
News Desk
2017-11-16
The National Security Committee condemned the recent attacks on Pakistan Army post at Bajaur Agency and police officials in Quetta...
News Desk
2017-11-16
Shahid Khaqan Abbasi was talking to Jirga of youth wings of different political parties belonging to tribal areas in Islamabad....