» »

Wordpress custom plugin

Wordpress custom plugin

icurk ::

Zdravo,

začel sem z izdelavo enega custom plugina, kjer lahko v adminu uporabnik skozi formo vnaša podatke nekega produkta, ki se potem shranijo v za to posebej narejeni tabeli v bazi.
Trenutno UI plugina izgleda tako, da prikaže samo formo. Moja želja pa je, da bi na "prvi strani plugina" bil seznam vseh do sedaj shranjenih produktov in en gumb, ki bi te preusmeril na stran s formo, kjer vneseš nov produkt (torej tako kot je to narejeno pri dodajanju/urejanju strani).
Moj problem je, kako narediti to drugo podstran (formo), torej kako narediti preusmeritev na formo po kliku na gumb oz na kakšen način so to sploh naredi.

Gandalfar ::

Zakaj pa ne uporabis custom post types?

icurk ::

Sem se šele včeraj spustil v WP, tako ne poznam tega. Sem si pa sedaj na hitro pogledal tole, sam mislim da mi tukaj bolj ustreza plugin, ker shranjujem malo več podatkov, poleg tega se podatki shranjujejo v tri različne tabele, ki so med seboj povezane + moj plugin omogoča nalaganje pdfjev in slike. Pa tudi za sam prikaz na front-endu, ki ni samo prikaz podatkov, mislim da je boljši ta moj plugin.

Zgornjo težavo sem sicer rešil tako, da sem v gumb, kateri me pripelje na podstran s formo, vnesel trenurni link ter dodal neko GET vrednost, ki jo nato pri prikazu UI plugina preverjam in ustrezno includam file, katera rabim.
Torej če kliknem v admin meniju na "produkti" je url
http://localhost/wordpress/wp-admin/admin.php?page=mg_product_plugin

in ker ni nobenega GET parametra includam file, kjer zgeneriram seznam vseh produktov
Po kliku na gumb "Vnesi produkt" je url
http://localhost/wordpress/wp-admin/admin.php?page=mg_product_plugin&section=addProduct

in ker tukaj obstaja GET parameter section=addProduct includam file, kjer zgeneriram formo.

Nevem če je to ravno pravilen način, ampak naredi tako kot želim.

Gandalfar ::

V osnovi hoces imet 'custom post types', ker ti to omogoča, da uporabljaš Wordpress admin vmesnik za vnos podatkov. Zraven skozi 'meta' fielde dodaš še dodatna polja (npr. z Advanced Custom Fields pluginom ali CMB). To ti potem omogoča, da kar preko WP_Query izpisuješ podatke v temi in nasploh se pravilno vključiš v Wordpress arhitekturo.

Za upload PDF-jev in medijskih datotek tudi ni problem, znajo ti meta field plugini ponucat kar wordpressov Media Uploader.

Tretja možnost je, da vzameš en plugin za forme kot je Ninja Forms ali Gravity forms in po vnosu podatke preneseš v custom post type.

icurk ::

No sem sedaj pogledal malo tale ACF plugin in dodal vsa potrebna polja, ter omogočil nalaganje slik in pdfjev. V adminu lahko sedaj lepo dodajam vse te moje "produkte" noter. Kako pa to zdej prikažem na front endu. Recimo da so produkti razdeljeni v 4 kategorije in v vsaki katerogije še na 3 podkategorije. Kako prikažem vsako kategorijo (podkategorijo) posebej in še vsak produkt posebaj?

icurk ::

Ali delam prav?
Imam kategorijo 1, 2 in 3. Za te kategorije sem naredil novo stran in jim določil custom template, ki sem ga naredil.
Koda v samem templatu:
$wp_query = new WP_Query(array('post_type' => 'products')); 
	        if ( $wp_query->have_posts() ) :
	            while ( $wp_query->have_posts() ) : $wp_query->the_post();
	                switch (get_field_object('material')['value'] ){
	                	case '1':
	                		//kategorija 1
	                	break;
	                	case '2':
	                		//kategorija 2
	                	break;
	                	case '3':
	                		//kategorija 3
	                	break;
	                }
	                
	            endwhile;
	        else :
	            echo '<h2>Not Found</h2>';
	            get_search_form();
	        endif;
 


In tako potem ustrezno prilagodim prikaz/izpis vsebine, glede na kategorijo, ki ji pripada?

Gandalfar ::

http://www.advancedcustomfields.com/res...
http://codex.wordpress.org/Class_Refere...
http://generatewp.com/wp_query/

Malo bolj kompleksen primer:

https://github.com/ocwc/conf2015/blob/m...
https://github.com/ocwc/conf2015/blob/m...

V osnovi z WP_Query naredis foreach loop.

Odvisno kako imas kategorije. Ce so 'category' taksonimija potem kar s 'cat' => 1, ce so pa taxonomy pa poglej 'wp_query custom taxonomy' sicer pa ce je field, pa potem moj ta drugi file in 'meta_query'

Zgodovina sprememb…

icurk ::

Aha, torej praktično bi jaz lahko naredil za vsako kategorijo svoj template, potem pa lahk s temi argumenti v wp_query pokličem točno določene produkte ( z določeno kategorijo itd.). No sej počasi se mi pa že svita :) no potem je pa to res veliko boljša rešitev kot tista moja s pluginom. Predvsem zelo hitra :)
No sedaj pa mislim da še zadnje vprašanje... Tam ko sem pri custom fieldsih določil da lahko naloži datoteko. A lahko naredim kakšno validacijo, da je bila res naložena pdf datoteka in ne kakšna druga?

Gandalfar ::

Gledam da bi moral filter spisat, pa nimam snippeta. Ce ti je moznost, ignoriraj za zdaj.

icurk ::

Kakšen filter to misliš?

Gandalfar ::

En drug wordpress internal. Filtrirat tip uploada ni trivialno v tem pluginu. Veliko lazje ti bo, ce pogledas koncnico in javis warning admin uporanbiku.

icurk ::

Kdaj in kako pa pogledam za to končnico? Oz kaj naj si bolj pogledam, da bom lahko to naredil?

Gandalfar ::

Kar s PHP-jem pogledas url pa zadnje 4 znake :)

icurk ::

Ja to že :) sam v katerem fajlu oz kje to pogledam. Kolikor sem v teh dveh dneh spoznal WP sigurno samo napišem to funkcijo in določim ustrezen add_action(), ali pač ?

Gandalfar ::

                while ( $wp_query->have_posts() ) : $wp_query->the_post();

tu ko izpisujes, lahko reces:

if ( is_super_admin() ) {
 // check for file type with strpos and echo error if is wrong
}


Kar na frontendu (res zlo hitra in fail resitev, ampak bos imel check v 3 min spisan :)

Zgodovina sprememb…

icurk ::

Ja to že... sem mislu da bi pri uploadanju že opozoril. No sej to ni tako tako nujno, tako da bom pusti za drugič.

Gandalfar ::

Nekaj med tem:

http://wordpress.stackexchange.com/ques...
http://support.advancedcustomfields.com...

samo je dosti tecno, ce ti ni se Wordpress poznan


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

HTML in SQL pomoč (strani: 1 2 )

Oddelek: Programiranje
517048 (5926) def0r
»

Javascript validacija web-to-lead forme

Oddelek: Programiranje
19994 (801) Gandalfar
»

Download vsebine strani s JS

Oddelek: Izdelava spletišč
472371 (1669) MrBrdo
»

Wordpress - izpis postov glede na datum

Oddelek: Izdelava spletišč
7733 (681) JayKay
»

ASP.NET (C#) - Pomoč

Oddelek: Izdelava spletišč
131057 (834) Denisj

Več podobnih tem