Wordpress如何删除我的帖子与他们上传的文件的关系

时间:2012-02-14 18:39:28

标签: wordpress upload codex

嗨我正在尝试知道是否有一些方法可以删除上传文件与未删除文件的帖子之间的关系,当您上传文件并插入帖子时。例如pdf文件。你会得到一个插入帖子的链接。我想要做的是如果我从帖子中删除此链接。从数据库中的帖子中删除此文件的引用。

我面临的问题是我正在使用一个函数,它将所有上传的pdf文件都返回到自定义类型的帖子中。

function getPdfList(){
    global $post, $posts;       
    $list = array();
    $args = array(
        'post_type' => 'attachment',
        'numberposts' => null,
        'post_status' => null,
        'post_parent' => $post->ID
    );

    $attachments = get_posts($args);
    if ($attachments) {
        foreach ($attachments as $attachment) {
            $ext = pathinfo($attachment->guid, PATHINFO_EXTENSION);
            if("pdf" == strtolower($ext)){
                $list[] = $attachment;
            }
        }
    }       
    return $list;

}

那么我在我的php文件中这样做

        $args = array( 'post_type' => 'fuerzabasica', 'posts_per_page' => 40 );
    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();

        $pdfs = getPdfList();                   
        echo '<div class="entry-content" style="">';
            //the_content();
            foreach ($pdfs as $pdf) {
                echo $pdf->guid."<br />";
            }               
        echo '</div>';
    endwhile;
    ?>

问题是我仍然在从帖子中删除链接的文件,所以如果我的USER上传新文件,他将获得旧文件(链接被删除)和新文件。是一种删除我的帖子的文件的引用的方法??

1 个答案:

答案 0 :(得分:0)

WordPress将在帖子和上传文件之间保持父/子关系。为防止出现这种情况,您必须确保每个附件的post_parent值为0,而不是父帖子ID。

您可以使用save_post过滤器来完成此操作,您可以在其中循环浏览get_posts(array('post_type' => 'attachment', 'post_parent' => $post_id, 'posts_per_page' => -1));设置post_parent0所返回的任何附件。 $post_id是过滤函数的第一个参数。