web-dev-qa-db-fra.com

get_option () filtrer et sortir de la récursion

get_option() fournit deux filtres 'pre_option_'.$option et 'option_'.$option.

Cependant, la plupart du temps, j'essayais de les utiliser, cela explose généralement et ne vaut pas la peine - soit j'ai besoin de vérifier une autre option à l'intérieur de mon filtre, ce qui déclenche mon filtre, ce qui déclenche mon filtre ...

Un autre cas courant est que je dois obtenir l’option courante que je filtre et que je ne peux pas faire car je le filtre.

Juste curieux - y a-t-il une logique pratique à suivre ici? Je sais que je peux jongler avec mon filtre, mais c'est une surcharge que je n'aime pas et le retrait du filtre n'est pas considéré comme très fiable. ;)

Pour un exemple pratique récent - je veux filtrer posts_per_rss en fonction de mon option, mais fournir une valeur WordPress si mon option n'est pas définie (pour l'enregistrement, je sais que le moyen recommandé pour le désordre est de le modifier via post_limits).

3
Rarst

Habituellement, je retire le filtre, puis le rajoute ensuite;

function _my_custom_option( $option )
{
    remove_filter( 'pre_option_name', '_my_custom_option' );

    // do what you like with $option

    add_filter( 'pre_option_name', '_my_custom_option' );
    return $option;
}
add_filter( 'pre_option_name', '_my_custom_option' );
9
TheDeadMedic