Я понимаю, что наверняка сказывается не доученая мат. часть, но объяснения в книгах и интернете этому поведению не нашел, поэтому буду рад помощи.
Спасибо, за раннее) Вот функция, если интересно. Работаю с wordress'ом, а именно woocommerce'ом
function get_array_postid() {
$arg = 0;
while ( have_posts() ) {
the_post();
$img_position[] = img_position();
$postid[] = $post->ID;
$arg_num = $arg; //для поиска узкой карточки
$count['num'] += $img_position[$arg]; //сумма строки
if ( is_int(($count['num'] - 9)/8) and $img_position[$arg] == 2 ) { // сумма строки = 8; так проверям на неправельность строки
while ($count['num'] >= 0 ) {
--$arg_num; //счетчик для поиска узкой карточки
$count['num'] = $count['num'] - $img_position[$arg_num];
if ( $img_position[$arg_num] == 1 ) {
$count_id_1 = $postid[$arg_num]; // номер найденной узкой карточки
unset( $postid[$arg_num] ); //уничтожаем старое id карточки
$postid[$arg + 1] = $count_id_1; //записываем на первое место след. строки найденую узкую карточку
$count['num'] = 1;//новая строка начинается с узкой карточки
$postid = array_values($postid);
break;
}
}
}
++$arg;
}
//собственно вывод списка товаров
$arg = 0; $count['num'] = 0; $img_position = array();
while ( each($postid) ) {
the_post();
$product->id = $postid[$arg]; $post->ID = $postid[$arg]; $product->ID = $postid[$arg];
$img_position[] = img_position();
$count['num'] += $img_position[$arg];
if ($count['num'] == 8) { $count['string'] += 1; $count['num'] = 0; }
++$arg;
woocommerce_get_template_part( 'content', 'product' );
if ( is_front_page() ) {
if ($count['string'] == 2) { break; } // 2 строки на главной
}
} }
get_array_postid();