我有一个问题,我正在创建一个分类网站,所以我有一个登录名和一个注册表,用户可以发布自己的广告。
他们有账户页面,可以看到他们发布的广告,我正在使用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、 不要看我的验证和消毒,我会稍后再做!
最合适的回答,由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;
}
});