防止从 Medialibrary 中删除附件

Prevent attachment from being deleted from Medialibrary

在 Wordpress 管理媒体库页面 (upload.php) 中,我想检查一下 delete_attachment 操作。

我希望我的自定义函数在删除附件之前触发。

在这个函数中,我想检查它与数据库中另一个对象的关系。并且只有在完全没有关系的情况下才删除它。

我使用此代码(在 functions.php 中)查看我的函数是否在 delete_attachment 上触发:

<code>
      add_action( 'delete_attachment', 'check_relations' );
      function check_relations( $post_id ){
      ?>    
          <script>
             function myFunction() {
                 alert("Hello! I am an alert box!");
              }
      </script>
      <?php
      }

</code>

但似乎我的函数根本没有触发。图像附件正在被完全删除。这段代码有什么问题?

嗯,你很幸运;

Up to and including WordPress 2.7 it is fired after the attachment is deleted from the database and the file system, limiting its usefulness. As of changeset #10400 (WordPress 2.8), the action will fire before anything is deleted.

因此,您可以更改删除行为。但是,你不应该用 javascript 来做。这对执行的 PHP 代码没有影响。

add_action( 'delete_attachment', 'check_relations' );
function check_relations( $post_id ){
    wp_die("Sorry, you can't delete this.");
}

也许简单的 return false; 也行。