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!
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.
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;
}