WordPress.org

Ready to get started?Download WordPress

Forums

Meta Box
Meta Box WYSIWYG, Shortcodes and wpautop (3 posts)

  1. enchantedillusions
    Member
    Posted 2 years ago #

    First off I want to say I have been using your method of meta boxes before you make it a plugin, which is awesome. :D

    I created a WYSIWYG meta box. And at first it didn't output shortcodes, which is important. So I added the following:

    $content_middle = apply_filters('the_content', get_post_meta( get_the_ID(), 'content_middle', true));
    
     echo $content_middle;

    Now this works perfectly, however the wpautop makes it go crazy adding paragraph and break tags around the shortcodes. And that isn't desired. It doesn't do that in the_content area.

    So, how do I use the WYSIWYG with shortcodes and stop it from adding breaks.

    I've tried removing the filter with the following:
    remove_filter( 'the_content', 'wpautop' );

    Before it echos meta, and then adding the filter back:
    add_filter( 'the_content', 'wpautop' , 12);

    After it, and I've had no luck.

    Yes I know that if I add it all in one continual line with no breaks it works, but this isn't best methods for clients who need to edit their pages.

    Any ideas would be appreciated. Thanks in advance!

    http://wordpress.org/extend/plugins/meta-box/

  2. enchantedillusions
    Member
    Posted 2 years ago #

    I edited the plugin myself. It seems wpautop was being forced in inc/fields/wysiwyg.php on lines 46-49.

    I changed:

    static function value( $new, $old, $post_id, $field )
    		{
    			return wpautop( $new );
    		}

    to:

    static function value( $new, $old, $post_id, $field )
    		{
    			if ($field['wpautop'] == 'false') : 
    
    		  		return $new;
    		else:
    				return wpautop($new);
    		 endif;
    
    		}

    In my "demo.php" under the fields array for wysiwyg I added:

    'wpautop' => 'false'

    I wanted to set a default value of true in case there is blank value for the wpauto. So in file /inc/classes/meta-box.php after line 503, I added:

    'wpautop' => true,

    And Finally... when I call in the meta data in the template I used the_content filter before I displayed it:

    $content_middle = apply_filters('the_content', get_post_meta( get_the_ID(), 'content_middle', true));
    echo $content_middle;

    This would also work in the template with only this:

    echo apply_filters('the_content', get_post_meta( get_the_ID(), 'content_middle', true));

  3. mommygeekology
    Member
    Posted 2 years ago #

    Just wanted to say thanks for sharing your solution -- I was just searching for the solution to the shortcode / p tag problem. ;-)

    Geek girls rock.

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic