Задать вопрос
@Spisoktem

Как сделать чтобы можно было изменять с админики WP парметры в WP_Query{}?

Всем доброго дня!
На сайте реализовал вывод популярных постов по просмотрам
<?php
                    $populargb = new WP_Query('showposts=3&meta_key=post_views_count&orderby=meta_value_num&cat=2' );
                    while ( $populargb->have_posts() ) {
                        $populargb->the_post(); ?>
                        <li>
                            <a title="<?php the_title(); ?>" href="<?php the_permalink(); ?>" class="title"><?php trim_title_chars(55, '...'); ?></a>
                            <div class="preview_text">
                                <?php echo trim_characters(100, '...'); ?>
                            </div>
                            <div class="viewsBox">
                                <span class="icon"></span>
                                <span class="quantity"><?php echo getPostViews(get_the_ID()); ?></span>
                            </div>
                        </li>
                    <?php } ?>

Как можно реализовать чтобы с админки изменять параметр WP_Query (showposts="...") , т.е нужно чтобы пользователь мог зайти и с админки мог менять кол-во выводимых популярных постов

Заранее благодарю за Ваши мысли.

П.С: плагины не подходять , нужно сделать именно так
  • Вопрос задан
  • 107 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Добавить опцию Settings API. В коде опцию считать и подставить в параметры. И да, приучитесь параметры передавать массивом, удобнее же:
$args = array(
    'showposts' => get_option( 'popular_posts_num' ),
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num',
    'cat' => 2,
);
$populargb = new WP_Query( $args );

Собственно, добавление опции:
function custom_query_settings() {

	// Секция настроек
	add_settings_section(
		'custom_query_settings_section',
		'Custom query settings section description',
		'custom_query_settings_section_callback',
		'reading' // В какой раздел настроек добавляем ("Чтение")
	);

	// Поле с настройкой
	add_settings_field(
		'popular_posts_num',
		'Custom option name',
		'custom_query_settings_callback',
		'reading',
		'custom_query_settings_section'
	);

	// Регистрируем опцию, чтобы WP ее видел
	register_setting( 'reading', 'popular_posts_num' );

}
add_action( 'admin_init', 'custom_query_settings' );

// Коллбек для секции (выводит описание секции)
function custom_query_settings_section_callback() {
	echo '<p>Intro text for our settings section</p>';
}

// Коллбек для настройки (выводит поле для ввода в админке)
function custom_query_settings_callback() {
	echo '<input name="popular_posts_num" id="popular_posts_num" type="number" value="' . get_option( 'popular_posts_num' ) . '" class="small-text" step="1" min="1">';
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы