0

そのため、必要な場合にのみプラグインスクリプト/cssをロードしようとしています。以下のfunctions.phpに「review」という投稿のカテゴリがあります。代わりに、どのページ/投稿/ホーム画面..nothignが読み込まれているかに関係なく、カテゴリ「review」の投稿にのみプラグインを読み込もうとしています。可能な助けはありますか?

add_action( 'init', 'stopmyrpjs', 100 );
function stopmyrpjs() {
if (!in_category('review')){
    remove_action('wp_head', 'myrp_load_necessary_js'); 
    remove_action('wp_head', 'myrp_track_traffic'); 
        wp_deregister_script( 'myrp-stuff' );
    wp_dequeue_script( 'jtip' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-ui' );
    wp_dequeue_script( 'myrp-stuff' );
    wp_dequeue_script( 'jquery-ui-accordion' );
    wp_dequeue_script( 'jscolor' );
    wp_dequeue_script( 'sorttable' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-rating' );
    }}

編集::is_categoryまたはin_categoryでは機​​能しないという事実を除いて、私はそれを機能させています..私が機能するようになったものは以下のとおりです:

add_action( 'wp_print_scripts', 'stopmyrpjs', 100 );
function stopmyrpjs() {
if (!is_single()){
    remove_action('wp_head', 'myrp_load_necessary_js'); 
    remove_action('wp_head', 'myrp_track_traffic'); 
wp_deregister_script( 'myrp-stuff' );
    wp_dequeue_script( 'jtip' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-ui' );
    wp_dequeue_script( 'myrp-stuff' );
    wp_dequeue_script( 'jquery-ui-accordion' );
    wp_dequeue_script( 'jscolor' );
    wp_dequeue_script( 'sorttable' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-rating' );
    }}

それでも、代わりに特定のカテゴリでこの作業ができたらいいのにと思います。

4

2 に答える 2

1

is_categoryが欲しいと思います

これはループの外側で使用でき、現在のビューに応じてブール値を返します。

アップデート:

アクションフックを詳しく見てみると、「機能していない」理由は、アクションの優先順位付けによるものです。'init'アクションでスクリプトの登録を解除してキューを解除しようとしています。これは、スクリプト自体が実際に登録および/またはエンキューされる前に起動している可能性があります。

また、外部スクリプトは、それぞれ独自のアクションフックと優先順位を持つさまざまなプラグインによって登録されていると思います。

initフックを使用する代わりに、「wp_footer」に変更して、余分なスクリプトを削除する前に、対応するプラグインによってすべてのスクリプトがロードされるようにしてください。

if (!is_category('review'))
{
    remove_action('wp_head', 'myrp_load_necessary_js'); 
    remove_action('wp_head', 'myrp_track_traffic'); 
    add_action('wp_footer', 'stopmyrpjs');
}
function stopmyrpjs(){
    wp_deregister_script( 'myrp-stuff' );
    wp_dequeue_script( 'jtip' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-ui' );
    wp_dequeue_script( 'myrp-stuff' );
    wp_dequeue_script( 'jquery-ui-accordion' );
    wp_dequeue_script( 'jscolor' );
    wp_dequeue_script( 'sorttable' );
    wp_dequeue_script( 'jquery-MetaData' );
    wp_dequeue_script( 'jquery-rating' );
}

また、wp_dequeue_scriptは比較的新しい関数であることに注意してください(バージョン3.1以降)。それでも問題が解決しない場合は、wp_dequeue_scriptをwp_deregister_scriptに変更してみてください。

さらにいくつかのチェックは、関数自体が起動していること、および適切なビューによって条件がtrueと評価されることを確認することです。

これがお役に立てば幸いです。

于 2012-09-17T17:35:29.853 に答える
0

Script Logicは、すべてのJavaScriptファイルとCSSファイルを完全に制御できるWordPressプラグインです。WPの条件付きタグを使用して、必要なページにのみCSSおよびJSファイルを条件付きでロードでき。

于 2014-06-17T08:02:44.547 に答える