web-dev-qa-db-ja.com

プラグイン関数でwordpress定数を定義しますか?

プラグインに取り組んでいて、ポストリビジョンを無効にするオプションをビルドしようとしています。設定を登録し、チェックボックスがデータベースにリンクしていることを確認しました。オプション値はnullまたは1です。

私がやりたいことは、この定数を定義することです:define('WP_POST_REVISIONS', false);は、オプションが1に設定されている場合にのみ、プラグインファイルで定義します。

定数をプラグイン関数ファイルに直接入力すると機能しますが、ifステートメントまたは関数を介して定数を使用しようとすると、どのようにしようとしても機能しません。

次のようなオプション値を取得しています:$disable_revisions = get_option('disable-revisions');

これが私が試したものです:

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

別の関数を使用してみました:

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

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

そして、アクションを「wp」、「init」、および他のいくつかにも追加してみましたが、どれも機能しません。

$disable_revisions = 1の場合のみ、定数をどのように定義できますか?

1
Nexus6

プラグインで定数を定義する必要はないと思います。後でデバッグするのは非常に難しいでしょう。

私見 wp_revisions_to_keep フィルターはより良い解決策になります。

したがって、コードは次のようになります。

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