Chci vrátit VŠECHNY příspěvky s query_posts
. Snažil jsem se nastavit posts_per_page
na opravdu vysoké číslo, ale query_posts
se šíří a nevrací žádné příspěvky. Jaký je správný způsob dotazování příspěvků bez omezení?
$args = array(
'post_type' => 'post',
'cat' => '22,47,67',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'depth' => 1,
'posts_per_page' => ?
);
-1 je vaše odpověď! Vyhledejte posts_per_page
zde .
$args = array(
'post_type' => 'post',
'cat' => '22,47,67',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'depth' => 1,
'posts_per_page' => -1
);
Důležité upozornění : To může mít za následek velmi obrovský dotaz, který může web snížit. Udělejte to pouze v případě, že jste si jisti, že s databází může pracovat. Ne ve veřejných tématech nebo pluginech.
Nebo alternativně můžete předat WP_Query
(což je to, co query_posts
používá) argument nopaging
, který v podstatě dělá totéž.
$args = array(
'nopaging' => true
// Your other args, etc..
);
Bude to přesně to samé, ale pokud se na to budete muset dívat později a nebudete si moci vzpomenout, co jste dělali, osobně se domnívám, že vám to bude jasnější, co máte v úmyslu s tímto parametrem uvnitř args. pole.
Jak jsem se však zmínil, oba budou ve skutečnosti dosáhnout stejného.
Nemůžu ublížit, pokud máte více než jeden přístup, a vždycky je dobré se podělit o to, co víte, stačí říct, že to je důvod mé odpovědi, i když už máte dostačující.;)
Ze souboru podřízených motivů:
add_action( 'pre_get_posts', 'wpsites_no_limit_posts' );
function wpsites_no_limit_posts( $query ) {
if( $query->is_main_query() && !is_admin() && is_home() ) {
$query->set( 'posts_per_page', '-1' );
$query->set( 'order', 'ASC' );
$query->set( 'post_type', 'post' );
$query->set( 'cat', '22,47,67' );
$query->set( 'orderby', 'name' );
$query->set( 'order', 'ASC' );
$query->set( 'hide_empty', '1' );
$query->set( 'depth', '1' );
}
}
Správná odpověď pro váš problém je 'posts_per_page' => -1
, protože -1
vrátí neomezené příspěvky na stránku.
Chci přidat doplněk k tomuto Q/A,
Pokud chcete získat počet příspěvků na stránce z nastavení čtení na WordPress administračním panelu, musíte zavolat funkci get_option()
a předat posts_per_page
jako řetězec.
$args = array(
'post_type' => 'post',
'cat' => '22,47,67',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'depth' => 1,
'posts_per_page' => get_option('posts_per_page')
);
Doufám, že tato odpověď pomůže někomu, jak mi to pomůže. Happy Coding Stackexchange Uživatelé
Nebo..
function getAll($arg, $posts_per_page = 50)
{
$data = array();
$page = 1;
do{
$arg['paged'] = $page;
$arg['posts_per_page'] = $posts_per_page;
$query = new WP_Query($arg);
foreach ($query->posts as $post){
$data[] = $post;
}
$page++;
}while(count($query->posts) === $posts_per_page);
return $data;
}