Cum să fac WordPress să genereze un fișier XML personalizat (nu o hartă de site) care se actualizează doar la adăugarea de conținut nou?

13 ian. 2011, 01:31:27
Vizualizări: 14K
Voturi: 1

Nu caut o hartă de site, ci să creez un fișier XML pe care un meniu Flash să-l poată accesa. Nu doresc ca fișierul XML să fie generat de fiecare dată când cineva vizitează o pagină, ci să am un fișier XML static pentru viteza de acces. De asemenea, aș dori ca WordPress să actualizeze fișierul ori de câte ori este adăugat conținut nou (nu comentarii).

Există ceva încorporat în WordPress care să-mi permită să fac asta? Sau vreun plugin? Din nou, nu vreau o hartă de site. Vreau o listă specifică de articole. Momentan folosesc șabloane de pagini cu bucle personalizate, dar durează prea mult să se genereze de fiecare dată.

1
Comentarii

Vezi răspunsul meu pe acest link, este răspuns conform acestei întrebări: http://wordpress.stackexchange.com/questions/15218/how-to-generate-update-a-xml-sitemap-without-plugins/36856#36856

w3uiguru w3uiguru
19 dec. 2011 12:45:11
Toate răspunsurile la întrebare 3
0

Nu există nicio funcționalitate încorporată, dar ar trebui să te uiți la diferitele pluginuri pentru hărți ale site-ului. Acestea îți vor arăta a) unde să te conectezi și b) cum să generezi fișierul dacă nu ești familiarizat cu manipularea fișierelor PHP.

13 ian. 2011 02:51:44
1

Aruncă o privire la funcția export_wp.

Realizează o copie a acesteia și păstrează doar elementele pe care dorești să le exportezi, apoi rulează această funcție de fiecare dată când un articol este salvat: add_action('save_post', 'my_export_wp');

(Asigură-te că funcția trimite rezultatul într-un fișier XML)

13 ian. 2011 04:22:16
Comentarii

Acest fișier este puțin intimidant pentru mine. Cred că voi rămâne la sugestia anterioară

Ghost9 Ghost9
13 ian. 2011 08:52:55
5

Hmm... nu sunt sigur dacă există funcții specifice WordPress pentru crearea fișierelor. Există wp_handle_upload, dar nu sunt sigur cum l-ai putea folosi în acest context.

În funcție de configurația serverului tău, probabil poți folosi direct fopen și fwrite pentru asta.

Păstrează codul pe care îl folosești acum (cu buclele tale personalizate... presupun că ele conțin marcajul XML dorit), dar fă-l să construiască rezultatul ca string. Apoi salvează acel string într-un fișier. Ceva de genul:

// Construiește conținutul fișierului ca string
$file_contents = '<?xml version="1.0" ?><yourroot><item>some content</item></yourroot></xml>';

// Deschide sau creează un fișier (acesta o face în același director cu scriptul)
$my_file = fopen("myfile.xml", "w");

// Scrie conținutul string-ului în fișier
fwrite($my_file, $file_contents);

// Închide fișierul
fclose($my_file);

Desigur, totul depinde de configurația serverului tău și permisiuni. Poate cineva are o soluție mai bună care folosește doar funcții native WordPress.

13 ian. 2011 02:18:19
Comentarii

partea "să construiască rezultatul ca un șir de caractere" nu sunt sigur despre ea. aș pune URL-ul ca $file_contents = http://blog.com/sitetemplate

Ghost9 Ghost9
13 ian. 2011 02:58:37

cum aș putea face ca acel fișier să fie apelat de fiecare dată când cineva publică un articol?

Ghost9 Ghost9
13 ian. 2011 03:13:45

ah! am primit un răspuns la asta. Singura mea întrebare acum este, există vreo modalitate de a seta calea de salvare? ca să pot alege directorul în care se salvează?

Ghost9 Ghost9
13 ian. 2011 05:45:12

Desigur. fopen ar trebui să poată accepta o cale locală completă (ceva de genul var/www/html/yoursitefolder/someotherfolder/yourfile.xml). Desigur, acest lucru va depinde de permisiunile corecte de scriere în acel folder.

MathSmath MathSmath
13 ian. 2011 06:39:08

poți face asta cu o singură funcție numită: file_put_contents(); - http://php.net/manual/en/function.file-put-contents.php

hakre hakre
23 ian. 2011 03:02:50