Как я могу использовать «getarchives_where» для получения ежемесячных архивов для статических страниц?

Я хотел бы получать ежемесячные архивы для статических страниц. Я попытался использовать следующий код:

add_filter('getarchives_where','my_archives_filter'); function my_archives_filter($where_clause) { return "WHERE post_type = 'page' AND post_status = 'publish'"; } 

и на боковой панели я пишу:

 add_filter('getarchives_where','my_archives_filter'); wp_get_archives('type=yearly'); remove_filter ('getarchives_where','my_archives_filter'); 

Но это не сработает.

Вы можете мне помочь?

Благодарю.

Solutions Collecting From Web of "Как я могу использовать «getarchives_where» для получения ежемесячных архивов для статических страниц?"

wp_get_archives уже есть post_type = 'post' по умолчанию, и для его замены попробуйте это:

 add_filter('getarchives_where','my_archives_filter'); function my_archives_filter($where_clause) { str_replace( "post_type = 'post'" , "post_type = 'page'" , $where ); } 

в боковой панели:

 add_filter('getarchives_where','my_archives_filter'); wp_get_archives('type=yearly'); remove_filter ('getarchives_where','my_archives_filter'); 

add_filter за которым remove_filter метод remove_filter кажется взломанным, я предпочитаю использовать условный подход следующим образом:

 /** * Post type archives by month */ function kevinlearynet_getarchives_events( $sql_where, $r ) { // conditions for when you want to do this // (don't do it all the time) if ( is_post_type_archive( 'event' ) ) { $sql_where = str_replace( "post_type = 'post'" , "post_type = 'event'" , $sql_where ); } return $sql_where; } add_filter( 'getarchives_where', 'kevinlearynet_getarchives_events', 10, 2 ); 

Если вы просто пытаетесь изменить post_type на страницу, вам не нужно использовать фильтр. Просто выполните следующие действия:

 wp_get_archives( array( 'post_type' => 'page' ) ); 

Проблема в том, что архивы ориентированы на сообщения, а не на страницы.