Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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 自定义帖子类型永久删除帖子_Php_Wordpress_Advanced Custom Fields_Custom Post Type - Fatal编程技术网

Php 自定义帖子类型永久删除帖子

Php 自定义帖子类型永久删除帖子,php,wordpress,advanced-custom-fields,custom-post-type,Php,Wordpress,Advanced Custom Fields,Custom Post Type,因此,我希望我的自定义帖子类型中的帖子被永久删除,而不是先移动到垃圾箱。 所以我在网上找到了这段代码。 但不知怎么的,我无法让它工作 我的代码如下 function directory_skip_trash($post_id) { if (get_post_type($post_id) == 'directory') { // Force delete wp_delete_post( $post_id, true ); } } add_action

因此,我希望我的自定义帖子类型中的帖子被永久删除,而不是先移动到垃圾箱。 所以我在网上找到了这段代码。 但不知怎么的,我无法让它工作

我的代码如下

function directory_skip_trash($post_id) {
    if (get_post_type($post_id) == 'directory') {
        // Force delete
        wp_delete_post( $post_id, true );
    }
}
add_action('wp_trash_post', 'directory_skip_trash');

我的自定义帖子类型本身的其余代码,你可以在我前面所做的代码中找到

我可能错过了一些非常简单的事情

更新

所以现在它开始工作了。 它确实删除了帖子,但我得到了这个错误。 错误发生后,如果我返回到帖子页面,帖子将不在垃圾桶中
任何人只要有一个解决方案就可以删除而不发送此消息?

在你的另一篇文章中,它说你的文章类型称为“成员”。 而是检查“目录”类型的帖子。像这样更改if条件以实际影响正确的帖子类型:

function members_skip_trash($post_id) {
    if (get_post_type($post_id) == 'members') { // <-- members type posts
        // Force delete
        remove_all_actions('wp_trash_post');
        wp_delete_post( $post_id, true );
    }
}
add_action('trashed_post', 'members_skip_trash', 1);
函数成员\u跳过\u垃圾($post\u id){

如果(使用正确的
members
post-type获取帖子类型($post-id)==“members”){/:

function members_skip_trash($post_id) {
    if (get_post_type($post_id) == 'members') { // <-- members type posts
        // Force delete
        remove_all_actions('wp_trash_post');
        wp_delete_post( $post_id, true );
    }
}
add_action('trashed_post', 'members_skip_trash', 1);
您需要使用
trashed_post
hook。
wp_trash_post
发生在post被破坏之前,因此您会收到一个错误,因为post不再存在

function members_skip_trash($post_id) {
    if (get_post_type($post_id) == 'members') { // <-- members type posts
        // Force delete
        wp_delete_post( $post_id, true );
    }
}
add_action('trashed_post', 'members_skip_trash');
函数成员\u跳过\u垃圾($post\u id){

如果(get_post_type($post_id)==“members”){//那么我现在已经这样做了。我在移动到垃圾桶时遇到了一个错误,比如:error。但是当我回到页面时,它确实删除了它。但问题是我在WP config中启用了WP_DEBUG,但我没有得到错误行,只有一个Wordpress errorIs
define('WP_DEBUG_LOG',true)
也打开?可能日志文件中会显示一些内容。我目前在这里没有看到任何明显的错误,而且因为它以前没有产生任何错误,我怀疑这个函数中的任何地方都会发生错误。这可能会对其他钩子试图访问垃圾帖子造成一些副作用。@Damocles检查我的答案。
wp\u trash\u post
是一个错误的钩子。你的代码看起来与我的非常相似。尤其是在那条评论中。是的,我使用了正确的钩子。我阅读了你的答案,意识到你纠正了前面问题中OPs原始函数中的错误。在发布我的答案之前,我在我的评论中发布了正确的答案。而不是使用
wp\u trash\u post
作为你的钩子,尝试
垃圾帖子
。问题是
wp\u trash\u post
发生在帖子被移动到垃圾桶之前。所以你删除了帖子,然后在钩子上运行,但是既然帖子已经不存在了,你就得到了一个错误。是的,这就是诀窍。谢谢:我将帖子作为一个答案发布,这样其他人可以从中受益。是的我记下它:D