web-dev-qa-db-ja.com

プラグインの後にスタイルをエンキューする

特定のプラグインがそのスタイルをエンキューした後に、私のstyle.css(および他のスタイルシート)をエンキューする方法はありますか?

特に、私のstyle.cssにcformsのスタイルを上書きさせたいのですが、add_actionの優先順位を変更しても何もしません。

これは私が持っているものです:

    function rm_theme_styles()  
    {
            wp_register_style( 'rm_styles', get_template_directory_uri() . '/style.css', array(), null, 'all' );
            wp_register_style( 'jquery.fancybox', get_template_directory_uri() . '/js/libs/fancybox/jquery.fancybox-1.3.4.css', false, null, 'screen' );

            // enqueing:
            wp_enqueue_style( 'rm_styles' );
            wp_enqueue_style( 'jquery.fancybox' );
    }

    add_action('wp_enqueue_scripts', 'rm_theme_styles',10);

cforms:

    ### some css for positioning the form elements
    function cforms_style() {
        global $wp_query, $cforms_root, $localversion, $cformsSettings;

        ### add content actions and filters
        $page_obj = $wp_query->get_queried_object();

        $exclude  = ($cformsSettings['global']['cforms_inexclude']['ex']=='1');
        $onPages  = str_replace(' ','',stripslashes(htmlspecialchars( $cformsSettings['global']['cforms_inexclude']['ids'] )));
        $onPagesA = explode(',', $onPages);

        if( $onPages=='' || (in_array($page_obj->ID,$onPagesA) && !$exclude) || (!in_array($page_obj->ID,$onPagesA) && $exclude)){

            if( $cformsSettings['global']['cforms_no_css']<>'1' )
                    echo '<link rel="stylesheet" type="text/css" href="' . $cforms_root . '/styling/' . $cformsSettings['global']['cforms_css'] . '" />'."\n";

                    ### add jQuery script & calendar
                    if( $cformsSettings['global']['cforms_datepicker']=='1' ){
                        wp_enqueue_script('jquery',false,false,false,false);
                        wp_enqueue_script('jquery-ui-core',false,false,false,false);
                        wp_enqueue_script('jquery-ui-datepicker',false,false,false,false);
                    }
                    echo '<script type="text/javascript" src="' . $cforms_root. '/js/cforms.js"></script>'."\n";

            }
        }
    }

    add_filter('wp_head', 'cforms_style');
2
cfree

CFormsがwp_headにフックしていて、あなたがwp_enqueue_scriptsにフックしようとしていることに注意してください。 wp_enqueue_scriptsフックは、 inside wp_headフックで起動されます(優先順位は0、IIRC)。

そのため、スタイルシートはwp_head、優先度0でエンキューされ、cFormsスタイルシートはwp_head、優先度10でエンキューされています。後で出力するので、それはあなたのものに優先しています。

解決策は、あなたのスタイルシートに、同じ - wp_headフックを、 low の優先順位(つまり、10よりも大きい より高い )で使うことです。

5
Chip Bennett