Поддержка Плагины Нужно отобразить по одной записи из каждой категории

  • Здравствуйте!
    Вопрос в заголовке.
    Решить вопрос думаю с помощью какого-то хитрого цикла, но проблема в том, что плохо знаю PHP.
    Надеюсь на помощь со стороны знатоков.

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Допустим, что записи присвоено три категории, одна из которых дочерняя от четвертой. Теперь читаем вопрос в заголовке.

    Нужно отобразить по одной записи из каждой категории

    где отобразить?

    Модератор Юрий

    (@yube)

    Рыба:

    foreach(get_categories() as $category) {
        query_posts('posts_per_page=1&cat='.$category->cat_ID);
        while (have_posts()){
           the_pots();
           the_category();
           the_title();
           the_excerpt();
        }
    }

    тогда уха, the pot = котелок )

    Допустим, что записи присвоено три категории, одна из которых дочерняя от четвертой.

    Допустим, именно в Моём случае такого не будет.
    Вообще-то, Я использую рубрики как семейства шрифтов, а сами шрифты выкладываю по одному в записи (так как встраиваю их на основе заголовка, PHP-хитрость со ссылками, именами файлов). И, если честно, ощущаю, что что-то делаю неправильно. Может быть, лучше использовать пользовательские таксономии?
    Юрий, Ваша «рыба» сработала как надо, благодарю!
    Сразу же следующий вопрос: как исключить теперь из этого цикла категорию «без рубрики»?

    Модератор Юрий

    (@yube)

    Ответ тут http://codex.wordpress.org/Function_Reference/get_categories

    get_categories(‘exclude=1’)

    Да, получилось! Благодарю!
    Сделал так:

    foreach(get_categories('exclude=1') as $category) {
    	echo '<article class="hentry">';
    	query_posts('posts_per_page=1&cat='.$category->cat_ID);
    	while (have_posts()) {
    		the_category();
    	}
    	query_posts('posts_per_page=5&cat='.$category->cat_ID);
    	while (have_posts()) {
    		the_post();
    		$font = get_the_title();
    		$font = str_replace(' ', '-', $font);
    		$wpurl = get_bloginfo('wpurl');
    		echo "<style>
    			@font-face {
    				font-family: '$font';
    				src: url('$wpurl/wp-content/uploads/$font.ttf') format('truetype');
    				font-weight: normal;
    				font-style: normal;
    			}
    		</style>"
    		?>
    		<p style="font-family: <?php echo $font ?>"><?php the_title(); ?></p>
    		<?php
    	}
    	echo '</article>';
    }

    Чтобы было имя семейства шрифтов (название категории), а под ним — все шрифты семейства (записи).
    Но сервер не может обработать почему-то этот скрипт 🙁 ругается:
    Fatal error: Maximum execution time of 12 seconds exceeded in /users/shitfonts/www/wordpress/wp-includes/taxonomy.php on line 159
    Без двух циклов работает, но не так, как надо — получается над каждой записью заголовок категории, а надо не так.

    Пришлось пока скрыть лишние заголовки категорий с помощью css:

    .hentry ul.post-categories {
    		display: none;
    		}
    		.hentry ul.post-categories:first-of-type {
    			display: block;
    		}

    Но так нельзя ведь, это криво.

    Maximum execution time of 12 seconds exceeded in

    Жадный хостер у вас :)) Возвращайте деньги и берите нормального..

    можно попробовать сделать все в один SQL с помощью оператора GROUP BY
    установить группировку по категориям, но задача не из легких

    Жадный хостер у вас :)) Возвращайте деньги и берите нормального..

    Бесплатный (: хотя, 12 секунд для выполнения скрипта — не многовато ли?

    можно попробовать сделать все в один SQL с помощью оператора GROUP BY
    установить группировку по категориям, но задача не из легких

    мда уж, с этим Я точно не справлюсь 🙁

    не многовато ли?

    Если было бы многовато, то таких ошибок не получали тогда, может ему 13 секунд как раз было бы..:)

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «Нужно отобразить по одной записи из каждой категории» закрыта для новых ответов.