サポート » 使い方全般 » 本文空欄記事(カスタム投稿)をリストから除く

  • 解決済 wimaru

    (@wimaru)


    =記事取得PHP=

    <?php
    $args = Array(
                  'post_type' => array ('カスタム投稿'),
                  'paged' => $paged,
                  'post_status' => 'publish',
                  'orderby' => 'date',
                  'order' => 'DESC',
                  'posts_per_page' => 5,
                   );
    $item = new WP_Query($args);
    ?>

    上記PHPで、[カスタム投稿]の記事タイトルを固定ページに表示しようとしています。
    実はこの[カスタム投稿]の中には、「タイトルのみ入力されて本文が空欄の記事」が複数件あり、
    この空白記事はこのリストに表示したくありません。
    カスタムフィールドを使用しているため、記事の削除はできず…

    上記PHPで取得した後、
    <?php #if($content != NULL) : ?>
    で、空白記事を排除すると、見た目はOKなのですが、
    記事取得PHPでは全件取得しているため、ページングがおかしくなってしまいます。
    ページングは
    'total' => $wp_query->max_num_pages,
    で全件取得しています。

    別案として$itemの中に入った記事数をカウントし、
    $wp_query->max_num_pages,部分に入れ込んでみたのですが、
    こちらもページ分割の際におかしくなってしまいました。

    「本文空欄は条件から外す」という判定は可能なのでしょうか?
    直接DBから取得するしか方法はないのでしょうか?
    もし条件設定で可能であれば、ご教授いただけますと助かります。

    よろしくお願いいたします。
     

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • $item = new WP_Query($args);

    を呼び出す前に「本文が空欄でない」という条件を加えられます。

    function my_posts_where ( $where ) {
        return $where . ' AND post_content<>\'\'';
    }
    add_filter( 'posts_where', 'my_posts_where' );
    $item = new WP_Query($args);
    remove_filter( 'posts_where', 'my_posts_where' );

    最後の remove_filter は不要な気もしますが御作法と思って付けています。

    トピック投稿者 wimaru

    (@wimaru)

    gblsm様 ご教授ありがとうございます。

    コードの内容を自分なりに勉強しつつ、試してみます。
    また、ご質問させていただくかもしれませんが、
    よろしくお願いいたします。

    トピック投稿者 wimaru

    (@wimaru)

    gblsm様 ありがとうございました。
    遅くなってしまいましたが、
    うまく本文があるものだけ取得することができました。
    ありがとうございました。

    ただ、常にページ送りが表示されてしまう現象が発生いたしました。
    元々は取得件数が’posts_per_page’ で指定した数値以下なら、
    ページ送りは非表示にできていました。
    しかし、この現象は
    教えていただいたコードの使用、未使用にかかわらず発生しておりますので、
    何か別に問題があるのだと思います。

    ちなみにページ送りに関しては直コード及び、プラグインで試してみましたが
    症状は変わりませんでした。

    現在はとりあえず1ページあたりの表示数(‘posts_per_page’)を大きくし、
    取得した件数をカウント。
    カウント数が’posts_per_page’以下ならページング自体を表示しない。
    という形で対応しております。(無理やり感はいなめませんが…)

    原因は不明ですが、これに関してはまた考えてみたいと思います。
    どうしてもわからなければ、またご質問させてやってください。

    gblsm様、本当に助かりました。 ありがとうございました。

    一旦この質問は解決済みとさせていただきます。

    wimaruさん、解決してよかったです。

    ただ、常にページ送りが表示されてしまう現象が発生いたしました。

    WP_Queryの引数に含めてある

    'posts_per_page' => 5

    'posts_per_page' => -1

    に変えてみてください。この指定方法はWP_Queryの説明に記載されています。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「本文空欄記事(カスタム投稿)をリストから除く」には新たに返信することはできません。