|
26.07.2016., 22:22 | #1 |
Premium
Datum registracije: Nov 2005
Lokacija: Bjelovar
Postovi: 462
|
Generiranje XML-a iz WP-a
Imam wordpress site i trebam generirati xml datoteku koja ce sadrzavati elemente jedne od kategorija na stranici. Dakle, pitanje je kako povuci podatke iz kategorije i upisati ih u xml? Hvala |
26.07.2016., 22:41 | #2 |
only fool, not a horse
Datum registracije: Apr 2008
Lokacija: near zgb
Postovi: 1,276
|
Definiraj element i kategoriju. Da li treba radit kakve dodatne pozive prema stranici ili je sve što trebaš vidljivo? Jel to tvoja stranica ili? Koliko toga ima? edit: aha, kategorija je neka wp fora. Ako je tvoja stranica, ja bih radije čupao podatke prije, nego parsirao html. edit2: nisam baš s tim cmsovima na svom, vidim ima hrpa pluginova za export u xml. Guglaj neš ala "wordpress export category to xml" |
|
|
Oglas
|
|
26.07.2016., 22:49 | #3 |
Premium
Datum registracije: Nov 2005
Lokacija: Bjelovar
Postovi: 462
|
Sve je vidljivo. Npr. kategorija pop glazba; treba povuci naziv grupe, godinu izdanja albuma i naziv albuma. I to za svaki album trpati u xml. Prakticki radit feed. Postoje pluginovi koji if feeda pune wordpress, ali nisam nasao kontra, da iz gotovog weba generira xml. |
28.07.2016., 09:00 | #4 |
Bazinga
Datum registracije: Nov 2007
Lokacija: Križevci
Postovi: 3,873
|
Jel možeš pojasniti što je "Pop glazba", a što je "Naziv grupe", "Godina izdanja", "Naziv albuma" u terminima Wp-a? Da li je možda "Pop glazba" custom taxonomy, "Naziv grupe" custom post type, a "Godina izdanja" i "Naziv albuma" meta keys, odnosno values? Uglavnom, ako je princip rada takav ili sličan to možeš poprilično jednostavno izvući sa WP_Query. Dok izvučeš podatke van, ispisati ih možeš u kojem god ti obliku odgovara. Čak i ako ti treba cron, možeš to sve preko WP-a odraditi (wp_cron). Naravno, ako se često mijenja sadržaj, onda moraš razmišljati o actionima koje možeš "zakačiti" za neki event (npr. prilikom spremanja posta). Ovim smjerom bi trebao krenuti ako ne pronađeš gotovo rješenje.
__________________
The best place to hide a dead body is page 2 of Google search results. |
08.09.2016., 10:22 | #5 |
Premium
Datum registracije: Jun 2008
Lokacija: Ri
Postovi: 71
|
Ovo bi ti takodjer moglo biti korisno http://v2.wp-api.org/ |
10.12.2016., 23:07 | #6 |
Premium
Datum registracije: Nov 2005
Lokacija: Bjelovar
Postovi: 462
|
Meni bi zapravo trebao feed koji bi imao ovakvo tijelo: Code:
<?xml version="1.0" encoding="UTF-8"?> <items> <item> <id></id> <name></name> <images> <image></image> </images> <description></description> <price></price> <currency></currency> <category></category> <url></url> </item> |
14.12.2016., 09:25 | #7 |
Bazinga
Datum registracije: Nov 2007
Lokacija: Križevci
Postovi: 3,873
|
add_action('init', 'export_posts_to_xml');
1. get_posts(), get_post_meta(), get_the_category()
2. XML 3. Cron Cron ti nije neophodan. XML možeš generirati i kad spremaš post. save_post() To sve možeš napraviti u functions.php od teme koju koristiš. A možeš napraviti i plugin. EDIT: Mali primjer. Ubaci to u functions.php teme koju koristiš. Btw. "init" akcija nije baš najpametnije rješenje jer se xml generira kod svakog učitavanja stranice. Ako imaš puno postova, vjerojatno će skripta "puknuti" prije nego što odradi sve što treba. U tom slučaju stavi 'posts_per_page' => 10. -1 je u principu "SELECT *" PHP kod:
__________________
The best place to hide a dead body is page 2 of Google search results. Zadnje izmijenjeno od: sinisa1989. 19.12.2016. u 21:37. |
21.12.2016., 09:57 | #9 |
Bazinga
Datum registracije: Nov 2007
Lokacija: Križevci
Postovi: 3,873
|
__________________
The best place to hide a dead body is page 2 of Google search results. |
21.12.2016., 15:44 | #10 |
Premium
Datum registracije: Nov 2005
Lokacija: Bjelovar
Postovi: 462
|
Ne, imam post_type=product sto sam i unio u kod. |
|
|
Oglas
|
|
22.12.2016., 12:59 | #11 |
Bazinga
Datum registracije: Nov 2007
Lokacija: Križevci
Postovi: 3,873
|
print_r(get_posts(array('post_type' => 'product'));
Ja sam isto samo promijenio post type u product i radi mi ok. Probaj ovo i vidi jel ti vraća što.
PHP kod:
__________________
The best place to hide a dead body is page 2 of Google search results. |
28.12.2016., 21:27 | #12 |
Premium
Datum registracije: Nov 2005
Lokacija: Bjelovar
Postovi: 462
|
Kad stavim: Code:
add_action( 'save_post', 'export_posts_to_xml' ); function export_posts_to_xml() { $args = array( 'posts_per_page' => -1, 'offset' => 0, 'category' => '', 'category_name' => '', 'orderby' => 'date', 'order' => 'DESC', 'include' => '', 'exclude' => '', 'meta_key' => '', 'meta_value' => '', 'post_type' => 'product', 'post_mime_type' => '', 'post_parent' => '', 'author' => '', 'author_name' => '', 'post_status' => 'publish', 'suppress_filters' => TRUE ); $posts = get_posts($args); $file = fopen('posts.xml','w'); print_r(get_posts(array('post_type' => 'product')); $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?> <employees></employees>'); foreach($posts as $post) { setup_postdata($post); $image = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID)); $xml->addChild('post_id', $post->ID); $xml->addChild('post_title', $post->post_title); $xml->addChild('post_content', $post->post_content); $xml->addChild('post_image', $image[0]); } wp_reset_postdata(); file_put_contents($_SERVER['DOCUMENT_ROOT'].'/posts.xml',$xml->saveXML()); } |
28.12.2016., 21:53 | #13 |
Bazinga
Datum registracije: Nov 2007
Lokacija: Križevci
Postovi: 3,873
|
Za početak izbaci print_r(). Ostalo ti piše u postu #7, tj. nemoj staviti -1 u "posts_per_page"
__________________
The best place to hide a dead body is page 2 of Google search results. |
|
|
Oglas
|
|
|
|