我正在尝试构建一个简单的 WordPress插件。 我在自定义帖子类型中添加了一个名为状态的自定义列,在该列上,我有一个按钮,用于显示该帖子的当前状态“ 发布”或“待处理”。
我想点击按钮,并将特定帖子的状态从发布更改为待处理反之亦然,但是当我单击特定帖子时,我会根据发布将所有帖子“更新”为待审核,反之亦然帖子的状态> 。
当我单击特定帖子以更改其状态时,它会将所有帖子的状态从发布更新为待处理,反之亦然,我想更改我单击的帖子的状态。
我有以下代码,请告诉我我做错了什么地方。
add_filter('manage_testimonials_posts_columns', 'publish_pending_column');
function publish_pending_column($column){
$columns = array(
'cb' => "<input type='checkbox'/>",
'title' => 'Title',
'btn' => 'Status' ,
'date' => 'Date'
);
return $columns;
}
add_action('manage_testimonials_posts_custom_column', 'add_content_to_status_column',10,2);
function add_content_to_status_column($columns, $post_id)
{
$status = get_post_status($post_id);
echo "ID => ".$post_id;
echo "status is ".$status."<br>";
if(isset($_POST['change']))
{
if($status ==='publish')
{
echo "Now wer are inside in the publish if";
wp_update_post(array
(
'ID' => $post_id,
'post_status' => 'pending'
),$wp_error = true);
}
elseif($status==='pending')
{
echo "we are inside pending if";
wp_update_post(array
(
'ID' => $post_id,
'post_status' => 'publish'
),$wp_error = true);
}
}
switch ($columns)
{
case 'btn':
?>
<form action='' method = 'POST'>
<?php $status = get_post_status($post_id);?>
<input id ="<?php echo $post_id;?>" type='submit' name = 'change' value = '<?php echo $status;?>' />
</form>
<?php
break;
default:
break;
}
}