Wordpress Как убрать связь моего поста с загруженными ими файлами - PullRequest
0 голосов
/ 14 февраля 2012

Привет. Я пытаюсь узнать, есть ли способ удалить связь загруженных файлов с сообщением, БЕЗ удаления файлов, когда вы загружаете файл и вставляете его в сообщение.Например, файл 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 голосов
/ 15 февраля 2012

WordPress будет поддерживать отношения родитель / потомок между сообщениями и загруженными файлами.Чтобы избежать этого, вам нужно убедиться, что post_parent значение каждого вложения равно 0 вместо идентификатора родительских сообщений.

Это можно сделать с помощью фильтра save_post, в котором вы будете перебирать любые вложения, возвращаемые get_posts(array('post_type' => 'attachment', 'post_parent' => $post_id, 'posts_per_page' => -1));, установив post_parent в 0.$post_id - это первый параметр вашей функции фильтра.

...