前端上的Wordpress编辑帖子去除了换行符,并添加了“ rn”文本

问题描述

我正在使用一些代码生成前端帖子编辑表单。除了将换行符剥离并替换为“ rn”之外,所有其他方法都很好用,如果我使用撇号,则会添加正斜杠。

示例:

It's hard

With line breaks
To get them right

It's difficult.
@H_404_7@

显示为:

It\'s hardrnrnWith line breaksrnTo get them rightrnrnIt\'s difficult.
@H_404_7@

我尝试了nl2br之类的各种解决方案,但是什么都没做,可能是因为我没有正确实现;)任何帮助表示感谢!

表单代码

<form id="post" class="post-edit front-end-form" method="post" enctype="multipart/form-data">

    <input type="hidden" name="post_id" value="<?PHP the_ID(); ?>" />
    <?PHP wp_nonce_field( 'update_post_'. get_the_ID(),'update_post_nonce' ); ?>

    <p><label for="post_title">Title</label>
    <input type="text" id="post_title" name="post_title" value="<?PHP echo $post->post_title; ?>" /></p>

    <p><?PHP wp_editor( $post->post_content,'postcontent' ); ?></p>

    <p><label for="post_title">Test</label>
    <?PHP $value = get_post_meta(get_the_ID(),'edit_test',true); ?>
    <input type="text" id="edit_test" name="edit_test" value="<?PHP echo $value; ?>" /></p>

    <p><label for="post_title">Test 2</label>
    <?PHP $value = get_post_meta(get_the_ID(),'edit_test2',true); ?>
    <input type="text" id="edit_test2" name="edit_test2" value="<?PHP echo $value; ?>" /></p>

    <input type="submit" id="submit" value="Update" />

</form>
@H_404_7@

处理代码

if ( 'POST' == $_SERVER['REQUEST_METHOD'] && ! empty($_POST['post_id']) && ! empty($_POST['post_title']) && isset($_POST['update_post_nonce']) && isset($_POST['postcontent']) )
{
    $post_id   = $_POST['post_id'];
    $post_type = get_post_type($post_id);
    $capability = ( 'page' == $post_type ) ? 'edit_page' : 'edit_post';
    if ( current_user_can($capability,$post_id) && wp_verify_nonce( $_POST['update_post_nonce'],'update_post_'. $post_id ) )
    {
        $post = array(
            'ID'             => esc_sql($post_id),'post_content'   => esc_sql($_POST['postcontent']),'post_title'     => esc_sql($_POST['post_title'])
        );
        wp_update_post($post);

        if ( isset($_POST['edit_test']) ) update_post_Meta($post_id,esc_sql($_POST['edit_test']) );
        if ( isset($_POST['edit_test2']) ) update_post_Meta($post_id,esc_sql($_POST['edit_test2']) );
    }
    else
    {
        wp_die("You can't do that");
    }
}
@H_404_7@

(信用:https://wordpress.stackexchange.com/a/106582

解决方法

解决了!

替换为:

'post_content'   => esc_sql($_POST['postcontent']),'post_title'     => esc_sql($_POST['post_title'])

与此:

'post_content' => wp_kses_post($_POST['postcontent']),'post_title' => wp_strip_all_tags($_POST['post_title'])