Я хотел бы отображать каждый пост в порядке, указанном в разделе post__in
, на моей домашней странице в течение одного дня. То есть сначала должен показываться пост с ID 3 до 23:59:59, затем пост с ID 1 в течение 24 часов до 23:59:59, затем пост с ID 2 и так далее. Когда все посты будут показаны, он должен начаться снова с самого начала. У кого-нибудь есть идея, как это реализовать?
function post_of_the_day( $query_args) {
global $post;
$query_args = array(
'post_type' => 'example_post_type',
'posts_per_page' => 1,
'post__in' => array(3, 1, 2, 4, 7, 6, 5)
);
return $query_args;
}
Если вам нужен только один пост в день недели, вы можете использовать функцию PHP date() со строкой формата 'w'
. Он возвращает 0
для воскресенья, 1
для понедельника, 6
для субботы и т. д. Затем вы можете использовать это в качестве индекса, чтобы найти один идентификатор сообщения, который вы хотите, из вашего массива, и использовать аргумент 'p'
в ваших аргументах WP_Query()
function post_of_the_day( $query_args ){
$post_ids = array( 3, 1, 2, 4, 7, 6, 5 ); // List of available ID's
$id_index = absint( date('w') ); // 0-6 based on day of the week
$query_args = array(
'p' => $post_ids[$id_index], // 3 on Sun, 1 on Mon, 5 on Sat
'post_type' => 'example_post_type' // Your post type
);
return $query_args;
}
Вам не нужно запрашивать все 7 сообщений с помощью post__in
, если вам нужен только один. Как правило, вы хотите попытаться получить как можно меньше информации, необходимой для скорости, оптимизации и простоты обслуживания.
Конечно, все, что вы можете получить номер для. date('n')
дает вам число 1-12 месяца, date('W')
дает вам число 1-52 недели (начинается по понедельникам) и немного больше, но вот ответ о том, как получить "текущая неделя месяц как число"
Идеальный! Большое спасибо!
Большое спасибо! Это мне очень помогло! Можно ли это также применить к неделям месяца или к неделям года? Чтобы не пост в день, а в неделю показывался? @Xhynk