Where can I add another class for woocommerce wrapper?

前端 未结 2 903
生来不讨喜
生来不讨喜 2020-12-18 07:58

Woocommerce have a div with a class \"woocommmerce\" I want to add another class or remove the class. Which file is that?

   
2条回答
  •  执念已碎
    2020-12-18 08:25

    there is no ready-made filter or anything like that, that lets you do it, but you could filter the_content, to get it done.

    function so33675604_add_class_to_checkout( $content ) {
        //condition to check for the proper page
        if ( is_checkout() ) :
            //disable error reporting for falsy formatted html code
            libxml_use_internal_errors(true);
    
            //parse the $content html (treat content as UTF-8, don't add any doctype or other html wrappers)
            $html = new DOMDocument();
            $html->loadHTML( mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );
    
            //search for the very first div
            $container = $html->getElementsByTagName('div')->item(0);
            //add classes (remember to put woocommerce, since thats been used by some js functions)
            $container->setAttribute('class', 'woocommerce oink');
    
            //return the result
            return $html->saveHTML();
        endif;
        return $content;
    }
    //add the filter (priority must be high, so it runs later, after the shortcodes have been processed)
    add_filter( 'the_content', 'so33675604_add_class_to_checkout', 100 );
    

    please be aware, that this function uses conditionals and these might not work in wp-ajax calls / you would have find another way to check, if checkout (or else), probably via global wp_query.

提交回复
热议问题