0

こんにちは、ファイルをアップロードして投稿に挿入するときに、ファイルを削除せずに、アップロードされたファイルと投稿の関係を削除する方法があるかどうかを知りたいと思っています。たとえば、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 が新しいファイルをアップロードすると、古いファイル (リンクが削除されたもの) と新しいファイルを取得することです。私の投稿のこのファイルの参照を削除する方法はありますか??

4

1 に答える 1

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

于 2012-02-14T20:51:13.593 に答える