Support » Plugin: JSJ Code Highlight » Remove added body classes when plugin not in use

  • Hey!

    I only use JSJ Code Highlight on web dev blog posts, so have no need for the plugin to load any other time…

    I use:

    wp_deregister_style( 'jsj_code_highlight_client_style' );
    wp_deregister_style( 'jsj_code_highlight-monokai_sublime_theme' );

    to deregister the sylesheets, as I have added everything I need to my master stylesheet, and have also added:

    if ( !(is_single() && in_category( 'web-development' )) ) {
        wp_dequeue_script( 'jsjCodeHighlight-Highlight' );
    }

    to my theme’s function.php, so that the JS only loads on the relevant pages.

    I was wondering if it’s also possible to remove the extra body classes that get added, when the plugin is not in use. I currently have:

    jsj_code_highlight jsj_code_highlight-monokai_sublime jsj_code_highlight-web_fonts jsj_code_highlight-no-include_additional_styles jsj_code_highlight-add_line_numbers jsj_code_highlight-no-tab_replacement

    on every page.

    Any help greatly appreciated!

    Many thanks!

    https://wordpress.org/plugins/jsj-code-highlight/

Viewing 3 replies - 1 through 3 (of 3 total)
  • Plugin Author Jorge Silva-Jetter

    (@jorgesilva-1)

    Hey!

    As of right now, that is happening here: https://github.com/thejsj/jsj-code-highlight/blob/master/jsj-code-highlight.php#L240-L253

    The function ‘body_class’ takes care of adding these classes.

    You might remove that function from the construct function (https://github.com/thejsj/jsj-code-highlight/blob/master/jsj-code-highlight.php#L96-L97), but that would get deleted if you update the plugin.

    Your best bet is probably to filter them back out. In your functions.php, include a function to filter your body class:
    `
    add_filter(‘body_class’, ‘remove_jsj_code_highlight_body_class’));

    function remove_jsj_code_highlight_body_class($class_array) {
    $new_class_array = array();
    foreach($class_array as $key => $classs) {
    if(!strpos($class, ‘jsj_code_highlight’)){
    array_push($new_class_array, $class);
    }
    }
    return $new_class_array();
    }
    `

    Let me know if that works.

    Just out of curiosity, do you want to do it just to keep your html clean or do you have another reason?

    J.

    Hey Jorge!

    Thanks for the reply! I tried your code:

    function remove_jsj_code_highlight_body_class($class_array) {
    	$new_class_array = array();
    	foreach($class_array as $key => $class) {
    		if(!strpos($class, 'jsj_code_highlight')){
    			array_push($new_class_array, $class);
    		}
    	}
    	return $new_class_array;
    }
    
    add_filter('body_class', 'remove_jsj_code_highlight_body_class');

    but I’m still getting the body classes showing up… Nothing untoward is happening (such as fatal errors or anything showing up in debug mode), but it’s as if the code wasn’t there at all!

    Any help much appreciated!

    To answer your question, I just like my HTML clean! 🙂

    Plugin Author Jorge Silva-Jetter

    (@jorgesilva-1)

    Try debugging it:

    1. See if the function is running at all by adding an echo statement to the function:

    function remove_jsj_code_highlight_body_class($class_array) {
    echo "Step 1";
    }

    2. If it is actually running, make sure that it’s giving you an array:

    function remove_jsj_code_highlight_body_class($class_array) {
    var_dump($class_array);
    }

    3. Make sure that it’s actually filtering the classes:

    function remove_jsj_code_highlight_body_class($class_array) {
          var_dump($class_array);
          foreach($class_array as $key => $class) {
    		if(!strpos($class, 'jsj_code_highlight')){
    			array_push($new_class_array, $class);
    		}
    	}
            var_dump($new_class_array);
    	return $new_class_array;
    }

    See at which step the code is failing and let me know.

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Remove added body classes when plugin not in use’ is closed to new replies.