Хранить избранные материалы на главной странице в оригинальном порядке

17

Я ищу, как сохранить избранные посты на главной странице моего блога, не исключая их из поста запроса. Мой блог использует тему «Двадцать четырнадцать». Я нашел это решение.

Откройте файл featured-content.php из папки inc вашей темы и найдите следующий код (строка 269 в нашем случае).

$query->set( 'post__not_in', $featured );

Просто закомментируйте эту строку, добавив две косые черты перед ней, чтобы получить это:

// $query->set( 'post__not_in', $featured );

Но в файле нет этой строки, и дочерняя тема не может переопределить папку inc родительской темы.

Я нашел другое решение, и оно работает, но проблема в том, что этот код показывает публикацию показанного контента не в их первоначальном порядке. Когда старая публикация контента - я использую липкую публикацию, чтобы сделать избранную публикацию - становится избранной, публикация избранного контента становится первым заказом, а не другой публикацией.

Я попытался использовать условный тег, как это.

function show_featured_content_on_home() {
if ( !is_home() ) {
remove_action( 'pre_get_posts', array( 'Featured_Content', 'pre_get_posts' ) );
    }
}
add_action( 'init', 'show_featured_content_on_home', 31 );

Со второй страницей и т. Д. Все в порядке - показывайте избранные сообщения по порядку, но на главной странице все еще есть проблемы.

Какие-либо предложения?

Назиман Азлые
источник
Я думаю, что у меня есть ответ. Чтобы это работало, вы должны использовать тег «Featured», а не «Sticky Post» для создания избранного контента. Таким образом, решение является правильным, и я неправильно понимаю и задаю неправильный вопрос. Условный тег можно удалить, потому что код функционален без условных тегов.
Назиман Азли
1
Я знаю, что уже довольно поздно, но не могли бы вы добавить вышеуказанный комментарий в качестве ответа? Этот вопрос имеет некоторые положительные отзывы, и правильный ответ делает его более очевидным. Заранее спасибо!
kraftner

Ответы:

1

Я думаю, что вы можете использовать WPQuery

    $the_query = new WP_Query( array( 'post__in' => get_option( 'sticky_posts' )) ); ?>

    <?php if ( $the_query->have_posts() ) : ?>

        <!-- pagination here -->

        <!-- the loop -->
        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>   
<h2><?php the_title(); ?></h2>
        <?php endwhile; ?>
        <!-- end of the loop -->

        <!-- pagination here -->

        <?php wp_reset_postdata(); ?>


    <?php endif; ?>

а для заказа своего поста вы можете использовать порядок и порядок, см. ссылку https://codex.wordpress.org/Class_Reference/WP_Query

Тадж Хан
источник