Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将帖子设置为';待定';如果它在wordpress中获得超过3份报告_Php_Wordpress - Fatal编程技术网

Php 将帖子设置为';待定';如果它在wordpress中获得超过3份报告

Php 将帖子设置为';待定';如果它在wordpress中获得超过3份报告,php,wordpress,Php,Wordpress,我使用的是wp用户前端,我还下载了一个名为“wp Reportpost”的插件 我想做的是,我希望用户使用WP User Frontend(正在工作)添加帖子,但当一篇帖子从其他用户处获得超过3份报告时,它应该将其状态从“已发布”更改为“待定” 我正在尝试在functions.php中创建一个函数,但无法使代码正常工作。 到目前为止,我得到了这个: /* Set posts to pending */ function change_post_status($post_id,$status){

我使用的是wp用户前端,我还下载了一个名为“wp Reportpost”的插件

我想做的是,我希望用户使用WP User Frontend(正在工作)添加帖子,但当一篇帖子从其他用户处获得超过3份报告时,它应该将其状态从“已发布”更改为“待定”

我正在尝试在functions.php中创建一个函数,但无法使代码正常工作。 到目前为止,我得到了这个:

 /* Set posts to pending */
function change_post_status($post_id,$status){
    $current_post = get_post( $post_id, 'ARRAY_A' );
    $current_post['post_status'] = $status;
    wp_update_post($current_post);
}
在reports.php中,我输入了以下代码:

if(count($report) >= 3){
    change_post_status($report->postID,'pending');
}
该帖子的状态仍然为“已发布”,而不是“待定”


有什么建议吗?

谢谢您对代码的帮助。我至少找到了解决这个问题的办法

我把这段代码放在functions.php文件中

/* Code to change post status */
function change_post_status($post_id,$status){
    $current_post = get_post( $post_id, 'ARRAY_A' );
    $current_post['post_status'] = $status;
    wp_update_post($current_post);
}
要使用该函数,我执行了以下操作:

change_post_status($report->postID,'pending');
我所做的是使用print\r获取$report对象正在保存的内容,并从中获取postID


谢谢你们的帮助

如何在reports.php中检索$report对象?检查$report的输出,看看它是否输出null,这可能是一种排除的可能性。$report没有打印出0或1以外的任何值。所以我不得不运行foreach循环。所以现在我至少可以得到一篇文章有多少篇报道。但我仍然没有找到一种方法,当它得到3个报告时,将其设置为挂起。因此,为了确保count($report)的输出返回3或更大,而这仍然不起作用,我将count($report)更改为$I,然后在foreach循环中使用$I来收集它运行的次数,我得到了正确的数字。就好像一篇文章有两份报告,它会打印出两份,以此类推。我在页面上做了一个测试,如果($I>=3)显示一个按钮,它就工作了。但是我无法让它将posts状态更改为'pending'。但是当您调用change\u post\u status函数时,您仍然使用$report->postd来输出post\u id;因此,通过使用循环中递增的计数,实际上只解决了一半的问题…我的观点是,如果$report本身是null对象,那么您仍将尝试调用null对象上不存在的属性(postID)…您确定它不是$report->ID或$report->post\u ID吗?我的建议是在调用if(count)(…conditional)之前打开调试并将$report对象实际输出到日志文件,或者显示设置$report的代码部分。