最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

wp editor - wpautop is not working when displaying content saved using wp_editor in a custom meta box

programmeradmin1浏览0评论

I am using wp_editor in a custom meta box. It is saving the content to the post metadata. And displaying it in the meta box as it should.

The problem is when I am trying to display this content on the public-facing side of the website. It is displaying without the paragraphs. All other HTML that are part of the wp_editor content is displaying as they should.

My meta box code is as follows:

public static function as_bllp_create_call_to_action_meta_box( $post ){

        /* Retrieve call to action content from post meta */
        $as_bllp_call_to_action_para = get_post_meta( $post->ID, '_as_bllp_call_to_action_para', true );

        //The call to action section is going to be an HTML editor

        $settings = array(
            'textarea_name' => 'as_bllp_call_to_action_para',
            'textarea_rows' => 10,
            'media_buttons' => false,
            'wpautop' => false
        );

        echo '<div class="call-to-action-para">';
            wp_editor(htmlspecialchars_decode( $as_bllp_call_to_action_para ), 'as_bllp_call_to_action_editor1', $settings);
        echo '</div>';
    }

Saving the wp_editor data with the following code:

 /* Building args for allowed html for the content area filtering */
        $allowed_html_tags = array(
            'a' => array(
                'href' => array(),
                'title' => array(),
                'rel' => array(),
                'target' => array()
            ),
            'br' => array(),
            'p' => array(),
            'em' => array(),
            'strong' => array(),
            'h1' => array(),
            'h2' => array(),
            'h3' => array(),
            'h4' => array(),
            'h5' => array(),
            'ul' => array(),
            'ol' => array(),
            'li' => array()
        );

if ( !empty( $_POST[ 'as_bllp_call_to_action_para' ] ) ){

            /* Stripping received content of all HTML tags except for allowed tags */
            $html_content = wp_kses( $_POST[ 'as_bllp_call_to_action_para' ], $allowed_html_tags );

            /* Converting HTML to preserve their meaning */
            $as_bllp_call_to_action_para = htmlspecialchars( $html_content );

            /* Save the call to action content in post meta */
            update_post_meta( $post_id, '_as_bllp_call_to_action_para', $as_bllp_call_to_action_para );

        }

The above part works just fine. It saves and displays the content in the metabox as it should. With proper formatting.

But it doesn't add the paragraphs back when I display it on the custom post type single template on the front end of the site. Using this code:


/* Retrieve call to action content from post meta */
   $as_bllp_call_to_action_para = get_post_meta( $post_id, '_as_bllp_call_to_action_para', true );

/* echo the content for display */
   echo htmlspecialchars_decode( wp_kses( $as_bllp_call_to_action_para, $obj1->allowed_html_tags ) );

$obj1->allowed_html_tags is the same as above.

I thought 'wpautop' => false argument should tell WordPress that I want to preserve the paragraphs. As indicated here:

Any ideas what I need to do differently to get the paragraphs formatting the same as entered in the meta box?

发布评论

评论列表(0)

  1. 暂无评论