Script per ottenere una lista di tutte le immagini non collegate?

10 nov 2010, 20:44:38
Visualizzazioni: 1.03K
Voti: 2

Nel mio functions.php, ho la necessità di elencare tutte le immagini nella cartella uploads che attualmente non sono collegate a un post nel database di WP.

Sembra che ogni volta che un'immagine viene caricata nella cartella uploads di WP (tramite FTP o tramite Media Manager), un record venga inserito nel database di WP, giusto?

Come posso ottenere un elenco di tutte le immagini che attualmente non sono collegate a nessun post?

2
Commenti

Solo per curiosità, è in qualche modo correlato alla tua altra domanda? Se è così, penso che ci sia qualche plugin che inserisce tutti i file non associati in wp-uploads nella libreria come voci non collegate / scollegate nel database.

hakre hakre
11 nov 2010 02:14:19

Hakre, ti riferisci a.. http://wordpress.org/extend/plugins/add-from-server/

t31os t31os
11 nov 2010 16:19:01
Tutte le risposte alla domanda 2
10

Dovrebbe funzionare:

$args = array(
    'post_type' => 'attachment', // Tipo di post: allegati
    'numberposts' => -1, // Numero di post da recuperare (-1 = tutti)
    'post_status' => null, // Stato del post (null = tutti gli stati)
    'post_parent' => 0 // Post genitore (0 = nessun genitore)
); 
$attachments = get_posts($args);

if ($attachments) {
    foreach ($attachments as $post) {
        setup_postdata($post);
        the_attachment_link($post->ID); // Mostra il link all'allegato
    }
}
10 nov 2010 23:36:16
Commenti

@sorich: Grazie mille. Questo mi avvicina decisamente alla soluzione. Tuttavia, sta restituendo un po' più dati di quelli che mi servono. Ad esempio, sembra che l'immagine stessa sia contenuta in ["guid"]=> string(59) "http://localhost/mysite/wp-content/uploads/theImage.png" quindi questa è la parte che sto cercando. C'è un modo per chiamare get_posts e ottenere solo il valore "guid"?

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

Non consiglierei di usare il guid poiché non è stato pensato per essere utilizzato come link. Il formato guid potrebbe cambiare in futuro (http://core.trac.wordpress.org/ticket/6492). Dovresti usare the_attachment_link($post->ID, false), ad esempio, per ottenere il link all'immagine.

sorich87 sorich87
14 nov 2010 12:51:49

In WP 3.1, sarai in grado di ottenere solo un campo con get_posts: http://core.trac.wordpress.org/ticket/14777. Nel frattempo, puoi usare il filtro posts_fields.

sorich87 sorich87
14 nov 2010 12:54:29

Non è vero, la patch non specifica che può essere restituito solo un campo, sta estendendo get_posts per consentire la selezione di campi specificati, invece di restituire semplicemente tutti, questo allinea get_posts con altre funzioni che supportano la stessa cosa (un esempio sarebbe get_terms).

t31os t31os
14 nov 2010 14:23:56

@t31os: in base alla tua spiegazione, non vedo come quanto ho detto non sia vero. Non ho detto che verrà restituito sempre un solo campo. Qual è la differenza tra "può essere restituito solo un campo" e "consentire la selezione di campi specificati" (se posso selezionare ad esempio solo un campo)? Mi sfugge qualcosa?

sorich87 sorich87
14 nov 2010 17:29:24

@sorich - Hai detto: "sarai in grado di ottenere solo un campo con get_posts"... puoi ottenere un numero di campi se lo desideri, non c'è alcuna restrizione.. (forse hai solo formulato male il commento?)

t31os t31os
14 nov 2010 20:15:47

@sorich: Come posso integrare the_attachment_link($post->ID, false) nel tuo codice di risposta? Sto usando ['guid'] perché è così che viene restituito il link dell'immagine allegata quando si utilizza get_posts().

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

@t31os: Scusa, non sapevo che 'be able to' potesse essere interpretato come 'sempre'. Non sono un madrelingua inglese. :)

sorich87 sorich87
15 nov 2010 08:32:24

@Scott B: Ho modificato la mia risposta.

sorich87 sorich87
15 nov 2010 08:37:24

@sorich - Come ho detto, penso sia solo il modo in cui hai formulato la tua risposta, nessun problema amico, nessun danno fatto... ;)

t31os t31os
15 nov 2010 11:06:27
Mostra i restanti 5 commenti
0

Se hai bisogno di gestirli nella tua interfaccia utente:

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

Aggiungi l'indirizzo del tuo blog all'inizio.

O in modo più descrittivo:

Accedi alla tua amministrazione, poi usa il menu: Media -> Libreria. Seleziona il link Non collegati sopra il menu a tendina dei filtri dell'elenco.

11 nov 2010 02:10:31