web-dev-qa-db-ja.com

Numberposts = -1の場合、offsetは機能しません

作成したショートコードに問題があります。短いコードは、特定のパラメータに基づいて最新の投稿を取得します。下記はパラメータです

extract( shortcode_atts( array (
    'numberposts'   => 6,
    'offset'        => 0,
    'featured'      => null,
    'trending'      => null,
    'showdate'      => null
), $atts ) );

$args = array(
    'numberposts' => $numberposts,
    'offset' => $offset,
    'category__not_in' => array(391),
    'orderby' => 'post_date',
    'order' => 'DESC',
    'post_type' => 'post',
    'post_status' => 'publish'
);

このショートコードをホームページで3回実行しています。初めての方はこのようになります。(これは最新の6つの記事をつかみます)

[recent-articles-grid featured="1" trending="1" showdate="1"]

このような2回目:(これは次の4つの記事をつかみます)

[recent-articles-grid numberposts="4" offset="6" showdate="1"]

そして3回目は、次のようになります。

[recent-articles-grid numberposts="-1" offset="10"]

Numberpostsパラメータに-1を使用すると、offsetパラメータが無視されることがわかりました。私がナンバーポストを100のようなものに変更するならば、オフセットはうまくいきます。

残りの投稿を取得してもオフセットを使用する方法はありますか?

2
Jason

この問題は非常に簡単な説明です;)あなたがする必要があるのは WP_Queryのためのコーデックスページ を見てoffsetパラメータについて読むことだけです:

offset (int) - 移動または通過する投稿の数。警告:offsetパラメータを設定すると、ページングされたパラメータが上書きされて無視され、ページ付けが中断されます(回避策についてはここをクリックしてください)。'posts_per_page' => - 1(すべての投稿を表示)が使用されている場合、 'offset'パラメータは無視されます。

だから私はそのための簡単な回避策はないと思います。 posts_per_pageを設定すると、すべての投稿を表示したいことをWPに伝えます。その方程式にオフセットを追加してもあまり意味がありません。

一方、既にすべての投稿を照会している場合は、自分で簡単にオフセット部分を実行できます - 最初の投稿Nを無視するだけです(理想的ではありませんが、機能します)。

そして - numberpostsに基づいてこれらのget_posts関数を使用しますか?もしそうなら、最初のNの投稿を無視するほうがさらに簡単です - Nからループを開始するだけです。

3