J'ai un type de message personnalisé appelé "vidéos" que je souhaite inclure dans le widget Archives (widget de stock dans le thème TwentyTwelve). Il n'apparaît déjà sur la page des archives, mais pas dans le widget.
Je ai déjà
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
function add_my_post_types_to_query( $query ) {
if ( $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'videos' ) );
return $query;
}
dans functions.php - puis-je modifier l'instruction IF pour qu'elle ressemble à "si la requête principale OR la requête du widget d'archivage"? Comment puis-je faire ceci?
Le Archive widget utilise wp_get_archives()
pour afficher l'archive.
Si vous souhaitez cibler toutes les fonctions wp_get_archives()
, vous pouvez utiliser le filtre getarchives_where
pour ajouter votre type de publication personnalisé:
add_filter( 'getarchives_where', 'custom_getarchives_where' );
function custom_getarchives_where( $where ){
$where = str_replace( "post_type = 'post'", "post_type IN ( 'post', 'videos' )", $where );
return $where;
}
Si vous voulez cibler uniquement le premier Archive widget, vous pouvez essayer
add_action( 'widget_archives_args', 'custom_widget_archives_args' );
function custom_widget_archives_args( $args ){
add_filter( 'getarchives_where', 'custom_getarchives_where' );
return $args;
}
avec
function custom_getarchives_where( $where ){
remove_filter( 'getarchives_where', 'custom_getarchives_where' );
$where = str_replace( "post_type = 'post'", "post_type in ( 'post', 'videos' )", $where );
return $where;
}
où le filtre est retiré, pour éviter d’affecter d’autres pièces.