如何避免帖子因条件而被移至垃圾箱?

Posted

技术标签:

【中文标题】如何避免帖子因条件而被移至垃圾箱?【英文标题】:How to avoid posts from moving to trash based off of a condition? 【发布时间】:2021-06-01 16:07:41 【问题描述】:

问题:我应该如何进行有条件的“移至垃圾箱”操作?这意味着只有在满足特定条件时才删除特定帖子。否则,提示用户不能这样做。

我尝试过的事情:我正在pre_trash_hook 上调用一个函数并检查我的状况。但我不确定如何阻止 WordPress 通过进一步的“移至垃圾箱”行动继续前进。这是供参考的代码。

public function register_pre_trash_handler( $product_post_type, $product_comparator_type_meta_key ) 

    $this->product_post_type = $product_post_type;
    $this->product_comparator_type_meta_key = $product_comparator_type_meta_key;

    add_filter( "pre_trash_post", array( $this, "safe_comparator_trash_cb" ), 10, 2 );
  

  public function safe_comparator_trash_cb( $should_trash, $post ) 

    $product_posts = get_posts( array(
      "post_type" => $this->product_post_type,
      "meta_key" => $this->product_comparator_type_meta_key,
      "meta_value" => $post->ID
    ) );

    if ( ! empty( $product_posts ) )  // this is the condition. If products exist, don't move the comparator to trash

      $should_trash = null;
    
  

仅供参考,不是 php 的忠实粉丝,除了修补 WordPress 主题之外从未使用过它。

【问题讨论】:

【参考方案1】:

试试wp_trash_post钩子。

add_action('wp_trash_post', 'prevent_from_trash');
public function prevent_from_trash($post_id) 
  if (! empty( $product_posts ))  // your condition
    wp_redirect(get_home_url() . "/wp-admin/edit.php?post_type=" . $custom_post_type);
    die();
  

此解决方案仅防止删除帖子,但不会发出任何警告,也不会注意到它不想删除帖子。

【讨论】:

以上是关于如何避免帖子因条件而被移至垃圾箱?的主要内容,如果未能解决你的问题,请参考以下文章

Capture One Mac怎么删除不要的目录?

移动到垃圾箱时的 URL 书签数据

如何将垃圾邮件移至垃圾邮件文件夹? [关闭]

将目录移至垃圾箱

Python 3:通过 uid (imaplib) 将电子邮件移至垃圾箱

如果允许JVM在垃圾收集期间移动堆内存,那么垃圾收集如何不因移动指针而导致JNI爆炸?