加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用更新从前端编辑帖子

发布时间:2020-12-13 15:57:47 所属栏目:PHP教程 来源:网络整理
导读:所以,我有以下代码允许从这里获取wordpress的前端编辑: https://wordpress.stackexchange.com/questions/9912/front-end-post-editing-using-a-form ?php if ( 'POST' == $_SERVER['REQUEST_METHOD'] ! empty($_POST['post_id']) ! empty($_POST['post_titl
所以,我有以下代码允许从这里获取wordpress的前端编辑: https://wordpress.stackexchange.com/questions/9912/front-end-post-editing-using-a-form

<?php
    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,'edit_test',esc_sql($_POST['edit_test']) );
        if ( isset($_POST['edit_test2']) ) update_post_meta($post_id,'edit_test2',esc_sql($_POST['edit_test2']) );
                        }
                        else
                        {
                            wp_die("You can't do that");
                        }
                    }
                ?>

    <form class="royal_page" role="form" method="post">                 
        <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(),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(),true); ?>
        <input type="text" id="edit_test2" name="edit_test2" value="<?php echo $value; ?>" /></p>

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

因此,编辑帖子本身就可以了.提交编辑后再刷新页面.

我看到刷新后所做的更改.但是,编辑表单不再包含内容,我必须再次刷新页面才能看到它(请参见下面的图像).

enter image description here

有谁知道为什么它可能会这样做,如果有任何解决方案如何解决它?

谢谢!

解决方法

您需要刷新页面以获取更新信息的原因可能是由于以下原因:

您的代码流可能是这样的:
1.你在顶部发布条件:<?php if(have_posts()):while(have_posts()):the_post(); ?>
>然后你就形成了处理代码:if(‘POST’== $_SERVER [‘REQUEST_METHOD’]&&!empty($_ POST [‘post_id’])&&!empty($_ POST [‘post_title ‘])&& isset($_ POST [‘update_post_nonce’])&& isset($_ POST [‘postcontent’]))…
>然后你就形成了.

将流量更改为此可能会有所帮助:
1.将表单处理代码置于顶部:if(‘POST’== $_SERVER [‘REQUEST_METHOD’]&&!empty($_ POST [‘post_id’])&&!empty($_ POST [‘post_title ‘])&& isset($_ POST [‘update_post_nonce’])&& isset($_ POST [‘postcontent’]))…

>然后把帖子条件:<?php if(have_posts()):while(have_posts()):the_post(); ?>>照常摆放表格.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读