web-dev-qa-db-fra.com

Longueur de l'extrait personnalisé sur la page d'accueil

Je pensais que je travaillais mais malheureusement ce n’est pas le cas. J'ai besoin que ma page d'accueil statique ait une longueur d'extrait de 50 et que toutes les autres pages en aient une de 20. Voici mon code jusqu'à présent:

function custom_excerpt_length( $length ) {
   if(is_front_page()) $content='excerpt';
   return 50;
}

add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

Je peux dire que cela ne fonctionne pas car sur seamlessthemes.com l'extrait est 50, mais sur seamlessthemes.com/themes l'extrait est toujours 50. Veuillez noter que ce thème avait un défaut de 20 pour une raison quelconque, donc la page de thèmes devrait toujours être 20.

Merci d'avance!

4
Jagst3r15

Comment fonctionnent les filtres

Les filtres sont simplement un point où vous pouvez prendre une valeur, c'est-à-dire définie (pour quelque chose) dans le noyau (par exemple, la fonction the_excerpt()), ouverte aux modifications.

Alors...

$some_var = apply_filters( 'change_this_var', 50 );

... dit juste:

"Some var" est défini sur 50, mais lorsque vous ajoutez un rappel de filtre à change_this_var, vous pouvez obtenir, modifier et renvoyer la valeur.

Exercice

Voici un exemple, basé sur votre question, que obtient la variable en tant que paramètre dans la définition de la fonction (la définition de la fonction "filter callback"). Il a ensuite modifie (dans le cas où nous utilisons ici des balises conditionnelles) it et renvoie it.

add_filter( 'excerpt_length', 'wpse61271_custom_excerpt_length', PHP_INT_MAX -1 );
function wpse61271_custom_excerpt_length( $length ) 
{
    return ( 
       is_front_page()
       XOR is_home()
    )
       ? 50
       : $length;
}
7
kaiser