需要帮助,以使在前端编辑帖子的逻辑

时间:2020-07-13 作者:AkForDev

我有一个问题,我正在创建一个分类网站,所以我有一个登录名和一个注册表,用户可以发布自己的广告。

他们有账户页面,可以看到他们发布的广告,我正在使用WP\\U查询。And I want to add possibility to edit these posts.

我正在使用wp_update_post() 除了I can\'t understand how can I make post ID be dynamic.

假设你进入你的账户页面,在那里你可以看到你发布的所有广告,你有一个按钮;编辑广告;,你点击它,进入带有简单表单的新页面,在那里你可以编辑你的广告。

以下是我的表单页面模板代码:

<?php 
/*
Template Name: Edit Post
*/
get_header(); ?>
<main role="main">
    <?php if(is_user_logged_in()) { ?>
        <h3>Edit Post</h3>
        <form id="edit_form" method="post">
            <input type="hidden" name="iseditpost" value="1" />

            <label for="edit_title">Title</label>
            <input type="text" name="edit_title" />

            <label for="edit_content">Sample Content</label>
            <textarea rows="8" name="edit_content"></textarea>

            <input type="submit" value="SUBMIT" name="submitpost" />
        </form>
    <?php } else { ?>
    <h3>You must be logged in</h3>
    <?php } ?>
</main>
<?php get_footer(); ?>
以下是我的帖子编辑代码:

if(is_user_logged_in()) {

    if(isset($_POST[\'iseditpost\'])) {

        $post_title = $_POST[\'edit_title\'];
        $post_content = $_POST[\'edit_content\'];

        $my_post = array();
        $my_post[\'ID\'] = 350;
        $my_post[\'post_title\'] = $post_title;
        $my_post[\'post_content\'] = $post_content;

        wp_update_post( $my_post );

    }
}
如你所见$my_post[\'ID\'] = 350;, 我需要350是动态的,所以当用户点击按钮时;编辑广告;并重定向到带有表单的页面模板,帖子ID必须对此广告有效。

我不知道怎么做。

很抱歉我的解释,如果您有任何问题,我将很高兴尝试更好地解释。提前感谢!

P、 不要看我的验证和消毒,我会稍后再做!

1 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

一个选项是在单击编辑链接时将帖子ID作为url参数传递。

例如,在某些模板中,用户可以看到自己的帖子列表。每个帖子都有一个编辑链接和作为url参数附加到链接的帖子id。

<ul>
    <?php foreach( $users_posts as $users_post ) : ?>
        <li>
            <span><?php echo esc_html( $users_post->post_title ); ?></span>
            <a class="button" href="/edit?id=<?php echo esc_attr( $users_post->ID ); ?>">Edit</a>
        </li>
    <?php endforeach; ?> 
</ul>
当用户单击其中一个编辑链接时,他/她将被定向到编辑模板,其中标识id参数并用于确定用户是否可以编辑相应的帖子。

<?php 
$post_id = ( ! empty( $_GET[\'id\'] ) && is_numeric( $_GET[\'id\'] ) ) ? absint( $_GET[\'id\'] ) : 0;
$post_to_edit = $post_id ? get_post( $post_id ) : false;
if ( current_user_can( \'edit_post\', $post_id ) && $post_to_edit ) : ?>
    <form id="edit_form" method="post">
        <label>
            <span>Post title</span><br>
            <input type="text" name="post_title" value="<?php echo esc_attr( $post_to_edit->post_title ); ?>">
        </label>
        <!-- more form fields -->
        <input type="hidden" name="id" value="<?php echo esc_attr( $post_id ); ?>">
        <!-- nonce field -->
        <!-- submit -->
    </form>
<?php else : ?>
    <p>Nothing to see here</p>
<?php endif; ?>
您还可以更早地执行编辑视图访问检查,例如template_redirect 行动

add_action( \'template_redirect\', function(){
    $post_id = ( ! empty( $_GET[\'id\'] ) && is_numeric( $_GET[\'id\'] ) ) ? absint( $_GET[\'id\'] ) : 0;
    $post_to_edit = $post_id ? get_post( $post_id ) : false;
    if ( ! current_user_can( \'edit_post\', $post_id ) || ! $post_to_edit ) {
        nocache_headers();
        wp_safe_redirect( home_url( \'/\' ) );
        exit;
    }
});

相关推荐

Front-End Post Submission

我正在尝试添加一个表单,用户可以从前端提交帖子。我正在学习本教程:http://wpshout。com/wordpress从前端提交帖子/我正在做的是添加this code 到我的一个页面模板。表单显示正常,但当我单击“提交”按钮时,它会显示“Page not found error“”许多评论者说这不起作用。谁能给我指出正确的方向吗?代码是否不完整?有缺陷吗?我做错什么了吗?谢谢Towfiq I。