erden89 adlı üyeden alıntı

Kod çok kullanışlı. Ben şöyle bir kod olsaydı çok daha iyi olurdu diye düşünüyorum: Eğer paragraf sayısı 6 ise 2 reklam göstersin şeklinde. Yani paragraf arttıkça reklam sayısı da artsa çok daha güzel olur. Elinize sağlık.


Sıfırdan bir düzenleme yapamadım kafam biraz dolu olduğu için ancak şu işinizi görecektir diye düşünüyorum.

Aşağıdaki kodu isteyen herkes kullanabilir. Kodun çalışma mantığı şu şekilde; İlk reklam kodunu yazının ilk paragrafından sonra ekliyor. Eğer yazıdaki toplam paragraf sayısı 6 veya 6dan fazla ise 2. reklam kodunu da ((toplam paragraf sayısı) / 2) +1 şeklinde hesaplayarak ortaya gelecek şekilde yerleştiriyor.

Örneğin; diyelim ki 20 paragraflık bir yazı yayınladınız. Bu kod ilk reklamı 1. paragraftan sonra ekliyor. 2. reklamı ise 11. paragraftan sonra ekliyor.

Diyelim ki 8 paragraflık bir yazı yazdınız ilk reklam yine 1. paragraftan sonra, 2. reklam ise 5. paragraftan sonra geliyor :) Umarım işinizi görür. Konuya da müsait vakitte ekleme yapacağım. Kodu kısa bir testten geçirdim üzerinde birkaç oynama yaptım, ilgilenenler de test edebilirler.

Yapmanız gereken tek şey
Birinci reklam.
ve
İkinci reklam.
kodları yerine kendi reklamlarınızı yerleştirmek.



add_filter( 'the_content', 'paragraflar_arasi_reklam_goster' );

function paragraflar_arasi_reklam_goster($content){

if( in_the_loop() ){

$closing_p = '

';
$paragraphs = explode( $closing_p, wptexturize($content) );

$count = count( $paragraphs );
if( 6 >= $count ) {
$totals = array( $paragraphs );
}else{
$midpoint = floor($count / 2);
$first = array_slice($paragraphs, 0, $midpoint );
if( $count%2 == 1 ) {
$second = array_slice( $paragraphs, $midpoint, $midpoint, true );
}else{
$second = array_slice( $paragraphs, $midpoint, $midpoint-1, true );
}
$totals = array( $first, $second );
}

$new_paras = array();
foreach ( $totals as $key_total=>$total ) {

$p = array();
foreach ( $total as $key_paras=>$paragraph ) {
$word_count = count(explode(' ', $paragraph));
if( preg_match( '~<(?:img|ul|li)[ >]~', $paragraph ) || $word_count < 10 ) {
$p[$key_paras] = 0;
}else{
$p[$key_paras] = 1;
}
}

$m = array();
foreach ( $p as $key=>$value ) {
if( 1 === $value && array_key_exists( $key-1, $p ) && $p[$key] === $p[$key-1] && !$m){
$m[] = $key;
}elseif( !array_key_exists( $key+1, $p ) && !$m ) {
$m[] = 'no-ad';
}
}

if( $key_total == 0 ){
$ad = array( 'ad1' => '
Birinci reklam.
' );
}else{
$ad = array( 'ad2' => '
İkinci reklam.
' );
}

foreach ( $total as $key_para=>$para ) {
if( !in_array( 'no_ad', $m ) && $key_para === $m[0] ){
$new_paras[key($ad)] = $ad[key($ad)];
$new_paras[$key_para] = $para;
}else{
$new_paras[$key_para] = $para;
}
}
}
$content = implode( ' ', $new_paras );
}
return $content;
}



Kaynak: https://stackoverflow.com/a/26083250/7178348