Спрашиваем и отвечаем по Wordpress-14

Samail
На сайте с 10.05.2007
Offline
369
#801
Toyvo Glumov:
Можно ли как-то сделать, чтобы определял не по id, а по свежести публикации? Например, чтоб прятал те, которые если меньше недели назад опубликованы.

Наверное так:


$query->set( 'date_query', array(
array(
'before' => '1 week ago'
)
) );

(не проверял)

TG
На сайте с 07.11.2016
Offline
127
#802

Samail, Не работает. И я так понимаю, что надо установить в любом случае

post__not_in
, но сначала узнать айдишники нужныъ постов.
O
На сайте с 30.09.2019
Offline
18
#803

Без всяких post__not_in сначала свежие записи выведет. Если нужно ограничение, вот записи за последнюю неделю


$query = new WP_Query( 'year=' .date('Y') . '&w=' . date('W') );

За последний месяц


$query = new WP_Query( array( 'date_query' => array( 'after' => '1 months ago' ) ) );
TG
На сайте с 07.11.2016
Offline
127
#804

onep, а куда это тут вставлять?

function wpb_exclude_from_everywhere($query) {

if ( $query->is_home() || $query->is_feed() || $query->is_search() || $query->is_archive() ) {
$query->set('post__not_in', array(5553, 3333));
}
}
add_action('pre_get_posts', 'wpb_exclude_from_everywhere');
O
На сайте с 30.09.2019
Offline
18
#805

За текущий месяц


function wpb_exclude_from_everywhere($query) {
if ( $query->is_home() || $query->is_feed() || $query->is_search() || $query->is_archive() ) {
$today = getdate();
$query->set( 'year', $today['year'] );
$query->set( 'monthnum', $today['mon'] );
}
}
add_action('pre_get_posts', 'wpb_exclude_from_everywhere');

За последний месяц


function textdomain_date_range( $where = '' ) {
$today = date( 'Y-m-d' , strtotime(date() . ' - 1 month'));
$where .= " AND post_date > '$today'";
return $where;
}
function textdomain_older_posts( $query ) {
if ( !is_admin() && $query->is_main_query() ) {
$query->set( 'order', 'ASC' );
add_filter( 'posts_where', 'textdomain_date_range' );
}
return $query;
}
add_action( 'pre_get_posts', 'textdomain_older_posts' );
TG
На сайте с 07.11.2016
Offline
127
#806

onep, спасибо, только мне надо не оставлять, а, наоборот, прятать, те что опубликованы за неделю. Изначально код так и делал, но нужно было самому вписывать айди записей.

O
На сайте с 30.09.2019
Offline
18
#807
Toyvo Glumov:
наоборот, прятать

В последнем коде смените знак >

$where .= " AND post_date < '$today'";

будет наоборот

TG
На сайте с 07.11.2016
Offline
127
#808

Дебаггер пишет date() expects at least 1 parameter, 0 given

и слишком много постов убирает, больше чем за месяц явно

O
На сайте с 30.09.2019
Offline
18
#809
Toyvo Glumov:
Дебаггер пишет date() expects at least 1 parameter, 0 given

Опечатался


$today = date( 'Y-m-d' , strtotime(' - 1 week'));
TG
На сайте с 07.11.2016
Offline
127
#810

Теперь все ок, спасибо большое. За последнюю неделю только чтобы, что поменять? (- 1 month на week - не хочет).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий