php 更多信息RSS(feed)черезравныеуказанныепромежуткивремени

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 更多信息RSS(feed)черезравныеуказанныепромежуткивремени相关的知识,希望对你有一定的参考价值。

<?php
/**
 * Изменяет порядок вывода постов в ленте через равные промежутки времени
 *
 * @param WP_Query $query
 */
function change_rrs_posts_date( $query ) {
	
	// Период обновления постов в ленте - 1 день
	$period = 24 * HOUR_IN_SECONDS;
	
	// Название временной опции
	$name_transient = 'feed_id_posts';
	
	// Вносим изменения только в обычную RSS ленту
	if ( isset( $query->query['feed'] ) && $query->query['feed'] == 'feed' && $query->is_main_query() ) {
		
		// Получаем ID постов
		$id_posts = get_transient( $name_transient );
		
		if ( $id_posts ) {
			// Если ID постов есть - указываем вывести их
			$query->set( 'post__in', $id_posts );
			$query->set( 'orderby', 'post__in' );
		} else {
			// Если ID постов нет - пытаемся получить их
			// Получаем посты рандомно в количестве, указанным в админке для RSS ленты
			$posts = get_posts( [
				'numberposts' => get_option( 'posts_per_rss' ),
				'orderby'     => 'rand',
			] );
			
			// Если посты нашлись
			if ( $posts ) {
				// сохраняем во временную опцию их ID
				$id_posts = wp_list_pluck( $posts, 'ID' );
				set_transient( $name_transient, $id_posts, $period );
				
				// Указываем вывести их
				$query->set( 'post__in', $id_posts );
				$query->set( 'orderby', 'post__in' );
			}
		}
	}
}

add_action( 'pre_get_posts', 'change_rrs_posts_date' );

以上是关于php 更多信息RSS(feed)черезравныеуказанныепромежуткивремени的主要内容,如果未能解决你的问题,请参考以下文章

php преобразуетчисловмассив

php Добравлениеколичестватовароввкорзине

php ПреобразоватьIPвчисло

php Авторизация(черезсессиюиликуки)

php Отключениефильтразагрузчикафайлов

php Найтивтороеповеличинезначение