web-dev-qa-db-fra.com

Comment configurer la page d'accueil de mon blog pour afficher uniquement les messages de ce weeke automatiquement?

sur mon site Web WPWeekly.net , je dois actuellement définir le nombre de messages à afficher manuellement dans le menu Configuration-> Lecture.

Existe-t-il un extrait qui me permet d'afficher automatiquement sur le blog de la page d'accueil uniquement les publications de la semaine en cours?

Merci!

1
noel saw

Selon docs, vous pouvez récupérer cet ensemble de publications en utilisant les paramètres de temps avec query_posts() , mais notez que cela va probablement briser horriblement votre pagination et les liens vers des entrées plus anciennes. .

1
Rarst

Je suppose que je ne suis pas vraiment en train de suivre les préoccupations de Rarst concernant la pagination et le lien précédent/suivant, je pense que vous pouvez intercepter en toute sécurité la requête de la page d’accueil et modifier les vars de requête afin de consulter les publications dans un intervalle de temps spécifique. approche d'action (pas besoin de configurer les valeurs de pagination).

add_action( 'pre_get_posts', 'home_week_query' );
function home_week_query( $wpq ) {
    if( $wpq->is_admin || !$wpq->is_home )
        return;
    if( isset( $wpq->query_vars['post_type'] ) && ( 'nav_menu_item' == $wpq->query_vars['post_type'] ) )
        return;

    if( !did_action('wp') )
        return;

    $today = getdate();
    $wpq->set( 'year', $today["year"] );
    $wpq->set( 'monthnum', $today["mon"] );
    $wpq->set( 'day', $today["mday"] );
}

La pagination fonctionne et les messages sont dans la plage spécifique, mais laissez-moi savoir si vous avez des problèmes avec le code.

0
t31os

J'ai engagé un développeur offshore pour appliquer ce que je voulais, les messages de la semaine précédente sur une page d'accueil à un site thématique. En rétrospective, j'aurais dû lui demander de postuler deux semaines (semaine en cours + cette semaine):

Vous pouvez télécharger le thème ici si vous voulez y accéder ... http://dl.dropbox.com/u/4016505/thematic-wpweekly.net.Zip

Mais voici ce qu'il a fait (dans ses mots) - espère que cela a un sens ...

Copiez le code donné dans le fichier "function.php" du dossier du thème actuel. Cela mettra
condition à votre requête initiale pour le post hebdomadaire.

function filter_where( $where = '' ) {
        $end_Date = date('Y-m-d',mktime(0,0,0,date('m'),date('d')-date('w')-1 ,date('Y'))) ;
        $start_Date = date('Y-m-d',mktime(0,0,0,date('m'),date('d')-date('w')-7 ,date('Y'))) ;

$where .= " AND post_date >= '".$start_Date."' AND post_date <= '".$end_Date."' ";
return $where;

}

Maintenant, il affichera la publication de la semaine dernière, mais vous pouvez modifier les variables $ end_Date et $ start_Date et les définir à la date du jour ou à une plage de temps donnée.

if(isset($_GET) and count($_GET)<=0){
    add_filter( 'posts_where', 'filter_where' );
    }

Les deux codes doivent être écrits avec l'autre fonction add_filter et au-dessus du code donné:

 $locale = get_locale();

Si vous souhaitez appliquer toutes les publications sur la période donnée, le code attribué à l'utilisateur juste avant la boucle

“have_posts() ) : the_post(); “ 

dans le fichier d'extension dans le dossier de la bibliothèque dans le dossier du thème actuel.

global $query_string;
query_posts( $query_string . "&posts_per_page=-1&order=desc" );
0
noel saw