@OlegSedoy

Получение custom post type. Намудрил?

Получаю кастомные записи, все работает, но что-то подсказывает, что намудрил. У кого будут замечания или комментарии?
<?php if ($res = \RestBuild\RestBuild::get_post('news', '4')): ?>
    <div class="news" id="news">
        <h2 class="news__title">Новости</h2>
        <div class="news__container">
            <?php
            foreach ($res as $post) {
                echo "<div class='news__item'>";
                echo "<h4>" . $post->post_title . "</h4>";
                echo get_the_post_thumbnail($post->ID, 'medium');;
                if (mb_strlen($post->post_content) >= 150) {
                    echo "<p>" . mb_strimwidth($post->post_content, 0, 150) . "</p>";
                    echo 'Подробнее';
                } else {
                    echo "<p>" . $post->post_content . "</p>";
                }
                echo "</div>";
            }
            ?>
        </div>
        <?php if ($res_load = \RestBuild\RestBuild::get_post('news', '', 4)): ?>
            <div class="news__load">Загрузить еще <?= count($res_load); ?></div>
        <?php endif; ?>
    </div>
<?php endif; ?>


метод
public static function get_post($post_type, $posts_per_page = -1, $offset = 0)
    {
        $my_posts = new \WP_Query;
        $myposts = $my_posts->query(array(
            'post_type'      => $post_type,
            'posts_per_page' => $posts_per_page,
            'offset'         => $offset,
            'order'          => 'ASC',
            'post_status'    => 'publish',
        ));
        wp_reset_postdata();
        return $myposts;
    }
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
dimasmagadan
@dimasmagadan
зачем усложнять простое? чем больше кода, тем больше шансов на ошибку.

коротко ревью (часть чисто мои хотелки, править не нужно):
1. весь вывод без фильтров (the_content, the_title и тп)
2. нет локализации (может и не нужна, но по стандартам надо)
3. <?= - короткие теги не по стандартам
4. get_post('news', '4') - второй параметр int или string?
5. $posts_per_page = -1 - плохо для производительности
6. два запроса к WP_Query, хотя можно было ограничится одним https://codex.wordpress.org/Plugin_API/Filter_Refe...
7. нет проверки/фолбэка для get_the_post_thumbnail()
8. mb_strlen($post->post_content) >= 150 можно заменить на стандартный https://developer.wordpress.org/reference/function...
9. ненужный wp_reset_postdata(). Функция нужна, если менялся глобальный $post при использовании стандартного лупа. Тут такого нет
10. собсно - нет стандартного лупа https://codex.wordpress.org/The_Loop

если следовать стандартам, код станет производительнее, проще, понятнее и не будет ломать работу других плагинов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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