2010-07-29 10 views
1

Je construis un thème wordpress Je veux que le DIV suivant et précédent n'apparaisse que si c'est un bouton suivant et précédent disponible.Wordpress, si la fonction retourne "rien"

S'il y a 10 messages et que la limite d'affichage est de 10 messages, je ne veux pas de div vide. Cependant, quand il y a 20 postes et que la limite d'affichage est de 10, je veux que les boutons suivants et précédents apparaissent dans leur propre div. Je suis arrivé si loin et j'ai réalisé que posts_nav_link() ne renvoie pas de valeur nulle.

function next_previous_div(){ 
print '<!-- '; 
$output = posts_nav_link(); 
print " -->\n"; 
if ($output != null) 
    { 
     echo '<div class="float post" style="text-align:center">'; 
     echo posts_nav_link(); 
     echo '</div><!-- end post-->'; 
    }; 
}; 

Répondre

5

Il y a quelques façons différentes, vous pouvez tester si vous avez un précédent/lien suivant:

test $ wp_query-> max_num_pages

obtenir une référence globale à l'objet de wp_query $ et voir si elle est supérieure à 1. Si oui, vous avez des liens de pagination:

global $wp_query; 
if($wp_query->max_num_pages > 1){ 
    posts_nav_link(); 
} 

capture la sortie de posts_nav_link()

Cette fonction echos par défaut, ce qui est la raison pour laquelle votre test nul ne fonctionne pas. Vous devez capturer la sortie écho puis tester:

// Capture the echoed output in the $links variable and test on it 
ob_start(); 
posts_nav_link(); 
$links = ob_get_clean(); 

if(strlen($links) > 0){ 
    echo $links; 
} 
+0

Merci J'ai utilisé la seconde, a parfaitement fonctionné! – ThomasReggi

+0

Heureux d'entendre - quand j'ai commencé avec WordPress, les fonctions qui ont fait écho automatiquement m'ont aussi quelques fois. – Pat

0

Je pense que le plus proche, vous obtiendrez sans scripts personnalisés sera ...

if (!empty(get_posts_nav_link()) { 
    echo '<div class="float post" style="text-align:center">'; 
    echo posts_nav_link(); 
    echo '</div><!-- end post-->'; 
} 
Questions connexes