WordPress: Bbpress добавляет дополнительный фильтр в популярный вид

В настоящее время я работаю над сайтом WordPress с установленным форумом Bbpress. Я использую шорткод, чтобы добавить все популярные темы на (не форумную) страницу:

[bbp-single-view id="popular"]

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

Я нашел этот скрипт в ядре bbpress, но я не знаю, как добавить еще один фильтр:

    // bbpress.php line 672

bbp_register_view(
'popular',
__( 'Most popular topics', 'bbpress' ),
apply_filters( 'bbp_register_view_popular', array(
'meta_key'      => '_bbp_reply_count',
'max_num_pages' => 1,
'orderby'       => 'meta_value_num',
'show_stickies' => false
)
) );

Я пробовал что-то подобное с SQL и пользовательским шорткодом, но я не знаю, как преобразовать это в список тем с правильными функциями макета:

SELECT
wp_posts.post_parent, COUNT(*) as count, wp_postmeta.*
FROM
wp_posts, wp_postmeta
WHERE
wp_posts.post_type = 'reply'
AND
wp_postmeta.post_id = wp_posts.post_parent
AND
wp_postmeta.meta_key = '_bbp_last_active_time'
AND
wp_postmeta.meta_value > (NOW() - INTERVAL 1 MONTH)
GROUP BY
wp_posts.post_parent
ORDER BY
count DESC
LIMIT 5;

Заранее спасибо! Помощь очень ценится!

1

Решение

Я уже нашел решение:

$date_now = date( 'Y-m-d H:i:s' );
$date=date_create($date_now);
date_sub($date,date_interval_create_from_date_string("30 days"));
$new_date = date_format($date,"Y-m-d H:i:s");
bbp_register_view(
'jaappopular',
__( 'Most popular topics', 'bbpress' ),
apply_filters( 'bbp_register_view_popular', array(
'meta_key'      => '_bbp_reply_count',
'max_num_pages' => 1,
'orderby'       => 'meta_value_num',
'show_stickies' => false,
'meta_query' => array(
'relation'  => 'AND',
array(
'key'     => '_bbp_last_active_time' ,
'value'   => $new_date,
'compare' => '>=',
)
),
)
) );
);

ДА УЖ!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]