web-dev-qa-db-fra.com

Comment faire en sorte que wp_get_archives indique les mois où seules les pages ont été créées?

Je crée un plugin et j'ai un problème,

ce code donne à tous mes mois que le post a été ajouté:

        <select name="sdate" id="sdate">
    <?php wp_get_archives('format=option'); ?>
        </select> 

le problème est que je ne reçois pas de dates auxquelles seules des pages ont été ajoutées.

en gros, je veux un menu déroulant qui va lister chaque année et mois (par exemple "septembre 2010") que quelque chose a été ajouté avec une valeur telle que "année-mois" (par exemple "2010-05")

Quelque chose que vous pouvez voir travailler sur la page d'exportation Wordpress, mais le code copié ne fonctionne pas pour moi.

3
maniu

La fonction wp_get_archives () exécute un filtre sur sa clause WHERE - elle s'appelle getarchives_where . Vous pouvez l'utiliser pour modifier la requête afin d'inclure uniquement des pages plutôt que des publications (ce qui est la valeur par défaut codée en dur).

Je n'ai pas encore testé cela, mais essayez-le:

add_filter('getarchives_where','my_archives_filter');

function my_archives_filter($where_clause) {

  return "WHERE post_type = 'page' AND post_status = 'publish'";

}

Ensuite, utilisez simplement la fonction wp_get_archives comme vous le feriez normalement.

Évidemment, cela affectera la fonction wp_get_archives à l’échelle du site. Par conséquent, si vous utilisez wp_get_archives pour récupérer une archive de publications ailleurs sur votre site, vous devrez envelopper add_filter dans un format qui reconnaît le contexte.

5
MathSmath

Donc, voici le code qui fait que tout fonctionne (affiche la liste déroulante des archives avec les dates auxquelles n'importe quoi a été ajouté):

    add_filter('getarchives_where','my_archives_filter');

    function my_archives_filter($where_clause='') {
        return "";
    }


        <select name="sdate" id="sdate">
               <?php wp_get_archives('format=option'); ?>
        </select>

Merci MathSmath!

0
maniu