Script pentru a obține o listă cu toate imaginile care nu sunt atașate?

10 nov. 2010, 20:44:38
Vizualizări: 1.03K
Voturi: 2

În fișierul meu functions.php, am nevoie să listez toate imaginile din folderul uploads care nu sunt în prezent atașate la nicio postare în baza de date WordPress.

Se pare că de fiecare dată când o imagine este încărcată în folderul uploads al WordPress (fie prin FTP, fie prin Media Manager), o înregistrare este inserată în baza de date WordPress, corect?

Cum pot obține o listă cu toate imaginile care nu sunt în prezent atașate la nicio postare?

2
Comentarii

Doar sunt curios, este cumva legat de cealaltă întrebare a ta? Dacă da, cred că există un plugin care inserează toate fișierele neasociate din wp-uploads în bibliotecă ca intrări nelegate / detașate în baza de date.

hakre hakre
11 nov. 2010 02:14:19

Hakre, te referi la.. http://wordpress.org/extend/plugins/add-from-server/

t31os t31os
11 nov. 2010 16:19:01
Toate răspunsurile la întrebare 2
10

Acest lucru ar trebui să funcționeze:

$args = array(
    'post_type' => 'attachment', // tipul postului - atașament
    'numberposts' => -1, // număr nelimitat de posturi
    'post_status' => null, // orice status
    'post_parent' => 0 // doar atașamentele fără părinte
); 
$attachments = get_posts($args);

if ($attachments) {
    foreach ($attachments as $post) {
        setup_postdata($post);
        the_attachment_link($post->ID); // afișează link-ul către atașament
    }
}
10 nov. 2010 23:36:16
Comentarii

@sorich: Mulțumesc foarte mult. Acest lucru mă aduce cu siguranță mult mai aproape. Însă returnează puțin mai multe date decât am nevoie. De exemplu, se pare că imaginea în sine este conținută în ["guid"]=> string(59) "http://localhost/mysite/wp-content/uploads/theImage.png", așa că aceasta este partea pe care o caut. Există vreo modalitate de a apela get_posts și de a returna doar valoarea "guid"?

Scott B Scott B
14 nov. 2010 01:45:03

Nu aș recomanda utilizarea guid-ului, deoarece nu a fost destinat să fie folosit ca link. Formatul guid se poate schimba în viitor (http://core.trac.wordpress.org/ticket/6492). Ar trebui să folosești the_attachment_link($post->ID, false), de exemplu, pentru a obține link-ul către imagine.

sorich87 sorich87
14 nov. 2010 12:51:49

În WP 3.1, vei putea obține doar un singur câmp cu get_posts: http://core.trac.wordpress.org/ticket/14777. Între timp, poți folosi filtrul posts_fields.

sorich87 sorich87
14 nov. 2010 12:54:29

Nu este adevărat, patch-ul nu specifică că poate fi returnat doar un singur câmp, ci extinde funcționalitatea get_posts pentru a permite selectarea câmpurilor dorite, în loc să returneze toate implicit. Aceasta aduce get_posts în linie cu alte funcții care oferă suport pentru același lucru (un exemplu ar fi get_terms).

t31os t31os
14 nov. 2010 14:23:56

@t31os: bazat pe explicația ta, nu văd cum ceea ce am spus eu nu este adevărat. Nu am spus că va fi returnat întotdeauna doar un singur câmp. Care este diferența între "doar un câmp poate fi returnat" și "permite selectarea câmpurilor dorite" (dacă pot selecta doar un singur câmp, de exemplu)? Mi-a scăpat ceva?

sorich87 sorich87
14 nov. 2010 17:29:24

@sorich - Ai spus: "vei putea obține doar un singur câmp cu get_posts"... poți obține mai multe câmpuri dacă dorești, nu există nicio restricție.. (poate doar ai formulat comentariul neclar?)

t31os t31os
14 nov. 2010 20:15:47

@sorich: Cum pot integra the_attachment_link($post->ID, false) în codul răspunsului tău? Eu folosesc doar ['guid'] pentru că așa este returnat linkul imaginii atașate atunci când folosesc get_posts().

Scott B Scott B
14 nov. 2010 20:19:45

@t31os: Îmi pare rău, nu știam că "a putea" poate fi interpretat ca "întotdeauna". Nu sunt vorbitor nativ de engleză. :)

sorich87 sorich87
15 nov. 2010 08:32:24

@Scott B: Am editat răspunsul meu.

sorich87 sorich87
15 nov. 2010 08:37:24

@sorich - Cum am spus, cred că e doar felul în care ai formulat răspunsul, nicio problemă, prietene, nu s-a întâmplat nimic rău... ;)

t31os t31os
15 nov. 2010 11:06:27
Arată celelalte 5 comentarii
0

Dacă ai nevoie să le gestionezi în interfața ta de utilizator:

/wp-admin/upload.php?detached=1

Adaugă adresa blogului tău în față.

Sau mai descriptiv:

Conectează-te la panoul de administrare, apoi folosește meniul: Media -> Bibliotecă. Selectează linkul Neatașate deasupra meniului derulant de filtrare al listelor.

11 nov. 2010 02:10:31