web-dev-qa-db-fra.com

Définir une constante wordpress via les fonctions du plugin?

Je travaille sur un plugin et j'essaye de construire une option pour désactiver les révisions de poste. J'ai le paramètre enregistré et j'ai confirmé que la case à cocher est liée à la base de données. La valeur de l'option est null ou 1.

Ce que je veux faire, c'est définir cette constante: define('WP_POST_REVISIONS', false); dans le fichier du plugin uniquement si l'option est définie sur 1.

Si je mets la constante directement dans le fichier des fonctions du plugin, cela fonctionne, mais si j'essaie de l'utiliser dans une instruction if ou via une fonction, cela ne fonctionne pas, peu importe comment j'essaye de le faire.

J'obtiens la valeur de l'option comme ceci: $disable_revisions = get_option('disable-revisions');

Voici ce que j'ai essayé:

if ($disable_revisions==1){
    define('WP_POST_REVISIONS', false);
}

J'ai également essayé d'utiliser une fonction séparée:

if ($disable_revisions==1){
    add_action('admin_init', 'disable_revs');
}

function disable_revs(){
    define('WP_POST_REVISIONS', false);
}

Et j'ai essayé d'ajouter l'action à 'wp', 'init' et quelques autres aussi, mais aucun d'entre eux ne fonctionne.

Comment puis-je définir la constante uniquement si $disable_revisions = 1?

1
Nexus6

Je ne pense pas que vous devriez définir des constantes dans votre plugin. Il sera très difficile de déboguer plus tard.

À mon humble avis en utilisant wp_revisions_to_keep le filtre sera une solution beaucoup plus agréable.

Votre code pourrait donc ressembler à ceci:

add_filter( 'wp_revisions_to_keep', 'my_revisions_to_keep_based_on_settings', 10, 2 );

function my_revisions_to_keep_based_on_settings( $num, $post ) {
    // change that according to your needs
    return intval( get_option('disable-revisions') );
}
1
Krzysiek Dróżdż