dydikson
@dydikson
Выношу свой мозг всякой вполне очевидной фигней

WordPress + PHP — Как узнать меньше ли параграфов в записи?

Здравствуйте друзья, имею вот такой (вымученный) скрипт:
/*-----------------------------  3 ---------------------------*/
 $paragraphAfter3 = 3;

*------------------------  WIDGET 3 ----------------------------*/
//Widget Area
add_action( 'widgets_init', 'register_my_widgets_google-ads-3' );
function register_my_widgets_main_google_ads_3(){
	register_sidebar( array(
		/* 'name'          => sprintf(__('Sidebar %d'), $i ), */
		'name'          => 'My code 3',
		/* 'id'            => "sidebar-$i", */
		'id'            => 'google-ads-3',
		'description'   => '',
		'class'         => '',
		'before_widget' => '<div id="%1$s" class="widget %2$s">',
		'after_widget'  => "</div>\n",
		'before_title'  => '<h2 class="google-ads-3 widgettitle">',
		'after_title'   => "</h2>\n",
	) );
}
add_action( 'widgets_init', 'register_my_widgets_main_google_ads_3' );


/*  function GoogleADS1(){
	if ( function_exists('register_my_widgets_google-ads-1') )
		dynamic_sidebar(google-ads-1);
};  */


add_filter( 'the_content', 'wpse_content_google_ads_3' );

function wpse_content_google_ads_3( $content ) {
if( !is_single() )
return $content;
/*Number paragraf*/
/* $paragraphAfter = 3; //number of paragraph */

global $paragraphAfter3;
$paragraphAfter = $paragraphAfter3; //number of paragraph
$content = explode ( "</p>", $content );
$new_content = '';
for ( $a = 0; 
		$a < count ( $content ); 
		$a ++ ) {
if ( $a == $paragraphAfter ) {
	ob_start();
if ( is_active_sidebar( 'google-ads-3' ) ) :
	 dynamic_sidebar( 'google-ads-3' ); 
else :
	 echo '<span></span>';
endif;
$result = ob_get_clean();

$new_content .= $result ;
}
  elseif ($a != $paragraphAfter) {
    $new_content .=  '';
}
$new_content .= $content[$a] . "</p>";
}
return $new_content;
}


Данный скрипт вставляет содержимое виджета через определенное количество параграфов, и работает хорошо. Но если на странице параграфов меньше. То он слепливает содержимое виджитов в футер.
Как добиться что бы он не отображал виджет если в посте меньше параграфов чем в нем указано?
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ответы на вопрос 1
Перед for поставьте условие, только переменную $content перезапишите, чтобы там был старый контент, а не массив.
if($paragraphAfter > count ( $content )) return $content;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы