web-dev-qa-db-ja.com

Wp_get_archivesにページ作成して作成されていない月を表示させるにはどうすればよいですか?

私はプラグインを作成していて問題があります、

このコードはポストが追加された私のすべての月を与えます:

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

問題は、私はページだけが追加された日付を得てはいけないということです。

基本的に、ドロップダウンのthatsが毎年+月(たとえば "September 2010")のような値で "year-month"(たとえば "2010-05")のように追加されるようにするつもりです。

あなたがWordpressのエクスポートページで作業しているのを見ることができるが、コピーされたコードは私のために働いていません。

3
maniu

Wp_get_archives()関数は、そのWHERE句に対してフィルタを実行します - それはgetarchives_whereと呼ばれます。これを使用して、投稿ではなくページのみを含めるようにクエリを変更することができます(これはハードコーディングされたデフォルトです)。

まだテストしていませんが、試してみてください。

add_filter('getarchives_where','my_archives_filter');

function my_archives_filter($where_clause) {

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

}

それから、通常どおりwp_get_archives関数を使用してください。

明らかに、これはサイト全体のwp_get_archives関数に影響するので、あなたのサイトのどこかで投稿アーカイブを取得するためにwp_get_archivesを使うなら、コンテキストを認識する何かでadd_filterをラップする必要があります。

5
MathSmath

それで、これがすべて動作するようにするコードは次のとおりです(アーカイブドロップダウンリストに日付が追加された日付を表示します)。

    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>

MathSmathありがとうございます。

0
maniu