http___menet.me_wordpress-petlja-loop__1.xml
1.1 2.1 2.2 2.3 3.1 3.2 3.3 4.1 5.1 6.1 6.2 7.1 7.2 8.1 8.2 8.3 8.4 9.1 9.2 9.3 10.1 11.1 12.1 12.2 13.1 14.1 15.1 15.2 15.3 16.1 17.1 18.1 18.2 19.1 19.2 19.3 19.4 20.1 21.1 22.1 23.1 24.1 25.1 25.2 26.1 27.1 28.1 29.1 29.2 29.3 30.1 31.1 32.1 33.1 34.1 34.2 35.1 35.2 36.1 37.1 38.1 39.1 40.1 41.1 42.1 42.2 42.3 43.1 44.1 45.1 46.1 46.2 47.1 48.1 48.2 48.3 48.4
Understanding and using WordPress Shortcodes WordPress as a platform provides really good support for plugin developers to create functionality on top of WordPress. WordPress lets the plugin developer create functionality which the post creator can use as a macro in the post or the page he publishes. These macros are called as Shortcode. The WordPress platform provides a very good API support for creating shortcodes. WordPress shortcode api’s provide good support for creating shortcodes, removing shortcodes , parsing the arguments of shortcode etc . This makes the plugin developer just concentrate on the functionality he wants to provide via his shortcode and not worry about the other infrastructure things required for the shortcode. In this article we are going to see what all support does WordPress provide to create a shortcode and how to use WordPress shortcode api’s and create your own shortcodes. Creating a simple Shortcode Let’s start by creating a simple shortcode which displays the latest five posts with their titles and links to them. The code to create the shortcode is as follows: function display_latest_post() { $result = ''; $query = new WP_Query( 'posts_per_page=3' ); // The Loop while ( $query->have_posts() ) : $query->the_post(); $result.= ' '; $result.= ' '.get_the_title().' '; $result.= ' '; endwhile; // Reset Post Data wp_reset_postdata(); //return the result return $result; } function register_shortcodes(){ add_shortcode( 'DISPLAY_LATEST_POSTS', 'display_latest_post' ); } add_action( 'init', 'register_shortcodes'); In the above code we first create a function display_latest_post. This function uses WP_Query to query the WordPress post to get the latest three posts from the database. Then we loop on the query to get the post title and the permalink of the post. Then we return the result from the function. Once we have written the function for getting the latest post to create a shortcode to display the latest post we will have to use the add_shortcode function provided by WordPress. The add_shortcode function takes two arguments, first the tag which will be used in the post content and second is the name of the function. Hence we use the add_shortcode function as add_shortcode( 'DISPLAY_LATEST_POSTS', 'display_latest_post' ); For more details on add_shortcode you can visit the following link. Once we have added the above code our shortcode is ready for use. To use our shortcode we create a new post and add the shortcode tag in square brackets as shown below: Once we create the post and go to the post page we will see the latest three posts on it with its permalink as follows: Passing arguments to shortcode The above shortcode is a basic shortcode and does not take any arguments and cannot be customized when adding in the post content. WordPress also provides a way to add arguments to the shortcode which can be used to customize the output of the shortcode. This really can enhance the value of a particular shortcode. Now let’s modify the above Shortcode to take arguments like number of post to display and to display post from some specific category. The code will be as follows: function display_latest_post($atts) { extract( shortcode_atts( array( 'numberofpost' => '3', 'categoryid' => '', ), $atts ) ); $result = ''; $querystring = 'posts_per_page='.$numberofpost; if(strlen($categoryid) > 0) $querystring .= '&cat='.$categoryid; $query = new WP_Query( $querystring ); // The Loop while ( $query->have_posts() ) : $query->the_post(); $result.= ' '; $result.= ' '.get_the_title().' '; $result.= ' '; endwhile; // Reset Post Data wp_reset_postdata(); //return the result return $result; } Here now in function display_latest_post we take the arguments which can be passed from the shortcode. Then we pass the arguments which we get from the shortcode and a array of default values to the WordPress function shortcode_atts. The function shortcode_atts merges the two values from the default array and from the array which is passed as argument. This becomes useful as in some cases the person using the shortcode might not want to specify all the arguments and might just want to pass some arguments. You can get more details about shortcode_atts at the following link. Then in case the arguments are passed to our shortcode function we will use those values and create the query for WP_Query appropriately. So in case if I want to show only one post in category 10, I will use the shortcode as follows: The output on the post will be as follows: Using enclosing Shortcodes WordPress allows to even us enclose only some part of the content of the post between the shortcode. Then that content is passed to your shortcode handler and then based on the content or some other logic the shortcode handler can return the appropriate content back. Now let’s create a small enclosing shortcode which will show the content itself if the user is logged in and will hide the content and show the login link in case the user viewing the post is not logged in. The code for our shortcode is as follows: function check_logged_in( $atts, $content = null ) { if ( is_user_logged_in() ) return $content; else return ' Please login to see the content '; } function register_shortcodes(){ add_shortcode( 'DISPLAY_LATEST_POSTS', 'display_latest_post' ); add_shortcode( 'CHECK_LOGGED_IN', 'check_logged_in' ); } In our shortcode handler the second argument passed is the content which will be enclosed by our shortcode. In our handler we first check if the user has logged in using the WordPress function is_user_logged_in(). In case he has not then we get the login url from the WordPress function wp_login_url and then return a link to the login page. The ‘CHECK_LOGGED_IN’ shortcode can be used on partial content of a post as shown below: In case the user is logged in the output will be as follows: In case the user is not logged in the content of the post will be as follows: Apply Shortcodes Programmatically Till now we saw how to create shortcodes using the WordPress shortcode API. We also saw how we can use the shortcodes in our post or pages content. We can even use the shortcode in our templates or as part of some other function in our theme or plugin. This can be done with the help of the WordPress function do_shortcode. The WordPress function do_shortcode takes in the content and in case there are any shortcodes inside that content those will be evaluated and returned as the output of the function. So in case we want to display the latest post in our theme we can do it using our shortcode as follows: echo do_shortcode('[DISPLAY_LATEST_POSTS]'); Some other useful WordPress Shortcode functions Once we are comfortable with creating and using WordPress shortcodes now let’s take a look at some other helpful functions which WordPress provides related to shortcodes. - remove_shortcode – This function takes in the tag used to add the shortcode. This function removes a shortcode which was previously added with add_shortcode. This might be useful in case you have multiple plugins adding shortcodes and you don’t want some of the shortcodes to be used on your site. - remove_all_shortcodes – This function removes all the added shortcode. - strip_shortcodes – This function takes in the content as a parameter and strips off all the shortcode tags in the content. This function might be useful in case you want to show the shortcodes only on some particular pages. Conclusion WordPress as a platform provides a great level of api support to create shortcodes. Shortcodes in WordPress are easy to create and are easy to use. Very useful functionality of various kinds can be provided using WordPress shortcode. So have fun while using shortcode in the next WordPress plugin you use.
1.1 1.2 2.1 3.1 3.2 4.1 4.2 5.1 6.1 6.2 6.3 6.4 7.1 7.2 7.3 8.1 9.1 14.1 14.2 14.3 16.1 17.1 17.2 17.3 17.4 17.5 17.6 18.1 19.1 19.2 19.3 19.4 19.5 19.6 21.1 22.1 26.1 26.2 26.3 26.4 27.1 27.2 28.1 29.1 29.2 29.3 29.4 31.1 32.1 37.1 37.2 37.3 37.4 37.5 37.6 37.7 37.8 37.9 37.10 38.1 39.1 39.2 39.3 39.4 39.5 41.1 42.1 43.1 44.1 45.1 48.1 49.1 50.1 51.1 53.1 53.2 53.3 53.4 53.5 54.1 55.1 55.2 55.3 55.4 56.1
Ako planirate da se ozbiljnije upoznajete sa Wordpresom, najvažnije je da se ne upetljate. Zato ćemo vas danas upoznati sa WordPress petljom – The Loop. Zašto WordPress petlja? WordPress u sebi sadrži mnoge funkcionalnosti kao što su teme, tagovi, pluginovi i slično, ali je WP petlja kičma WordPressa. Koristeći petlju možemo postaviti bilo koji sadržaj na naš sajt u kom god obliku to želimo da uradimo. U osnovi, WordPress ima “template tagove” koji provjeravaju da li postoje postovi koje možemo da prikažemo i, ako postoje, onda ih prikazuju. Spisak ovih tagova možete pogledati na ovoj adresi. Šta treba da znate pri korištenju? Morate da znate da je petlja dio vaših template fajlova koji se nalaze u wp-content/themes/ime_teme folderu. To su, na primjer, index.php, page.php, home.php i slično. Da biste shvatili petlju, morate biti svjesni ovih fajlova i nečega što se zove template hijerarhija. U ovom tekstu nećemo pisati o samoj template hijerarhiji, ali ono što treba da znate zbog praćenja ovog članka je da se, na osnovu template hijerarhije i URL-a koji ukucate u browser, vrši MySQL upit čiji se rezultati čuvaju u $wp_query objektu. Šta sve to, ustvari, znači? Ako odemo na stranicu www.primjer.me/blog (primjer naše blog stranice), za petlju će biti spremljeni svi blogpostovi. Ako odemo na www.primjer.me/imestranice, $wp_query objekat će sadržati samo informacije vezane za tu stranicu. Uvod u petlju WP petlja, generalno, ima sledeći oblik: Prva stvar koju treba da znate je da je have_posts() boolean funkcija, što znači da vraća TRUE ili FALSE. Vraća TRUE ako ima nešto da se prikaže (poziva se $wp_query->have_posts() ), a FALSE u svim drugim situacijama. Ako je if ( have_posts() ) vratila TRUE, ulazimo u: Ovdje primjećujemo funkciju the_post() koja će raspakovati sledeći post u $wp_query. Da je $wp_query bio prazan, naša petlja bi ušla u else dio koda koji u našem slučaju samo ispisuje string “Nema postova”. Gore napisana petlja ništa ne prikazuje dok vrti postove. Kada želimo da prikažemo neki podatak vezan za trenutni post korisniku, moramo koristiti Template tagove. Recimo, koristeći: the_title(), the_time() i the_content(), mogli bi prikazati naslov posta, vrijeme objavljivanja i sadržaj posta. Spisak svih tagova možete naći na ovoj adresi. Treba reći da većina tagova koja započinje na the_ ima pandane kojima je započinju na get_the_ koji se razlikuju od prvih samo po tome što ne prikazuju automatski podatke. Mijenjanje petlje Šta da radimo ako želimo da prikažemo neke stvari na našoj stranici koje se ne nalaze u $wp_query objektu? Recimo da želimo sa strane svakog blog posta postaviti linkove ka pet najnovijih ili najčitanijih blog postova. Postoji nekoliko načina da se ovaj problem riješi od kojih je prvi mijenjanje same petlje. Uzmimo za primjer da želite da na vrhu vašeg bloga postavite link ka najnovijem obavještenju. Pretpostavljam da bi za tako nešto imali posebnu kategoriju koju bi nazvali “obavještenje”. Vaš kod bi tada izgledao slično ovom: query_posts('posts_per_page=1&category_name=obavjestenje '); if ( have_posts() ) : while ( have_posts() ) : the_post(); Vjerujem da ste primijetili da je sam početak već drugačiji od standardne WordPress petlje. Na samom početku se javlja funkcija query_posts() koja dovodi postove u zavisnosti od argumenta. U našem slučaju to je posts_per_page=1, koji određuje da samo jedan najnoviji post treba da bude doveden i category_name=obavjestenje koji postavlja kategoriju iz koje treba uzeti post. Unutar petlje smo postavili samo link ka postu, i nazvali ga po naslovu posta. Važno je biti svjestan toga da query_posts() mijenja podrazumijevanu WordPress petlju i da, kad bi poslije ovoga opet pozvali petlju, ne bi dobili očekivane rezultate. Ovo se rješava tako što po završetku izmijenjene petlje pozivamo wp_reset_query() koji će resetovati upit. Drugi način U posljednjem odjeljku ovog članka, vidjeli ste da smo mijenjali podrazumijevanu petlju. Kako zbog toga može doći do promjene sledećih petlji koje koristimo, treba biti pažljiv pri upotrebi query_posts() funkcije. Zbog toga postoji funkcija get_posts() pomoću koje možemo stvarati više petlji bez mijenjanja podrazumijevane. Pogledajte sledeći primjer: foreach ($posts as $ post) : setup_postdata($post); ?> Ovo je već dosta drugačije od petlji koje smo do sada predstavljali. Razlog tome je što   provjerava da li ima postova i, ako ih ima, prođe kroz svaki. Umjesto toga get_posts() vraća niz postova koje mi čuvamo u promjenljivoj koju sami definišemo (u slučaju prikazanom gore to je promjenljiva $posts). Da bismo prošli kroz ovaj niz, možemo iskoristiti normalnu php foreach petlju. Ali kako stvari sad stoje, ne možemo koristiti template tagove. Zbog toga koristimo funkciju setup_postdata(), koja kao argument mora imati određeni post. Ova funkcija omogućava korištenje template tagova u kontekstu u kojem je postavljena (ovdje u foreach petlji). Jer smo koristili setup_postdata() funkciju, moramo pozvati wp_reset_postdata(), funkcija koja resetuje vrijednost globalne $post promjenljive da bi opet mogli koristiti običnu WP petlju. Nešto slično smo radili i kod query_posts() funkcije, poslije koje smo zvali wp_reset_query() iz istog razloga (wp_reset_query() u sebi čak sadrži poziv za wp_reset_postdata()). U našem primjeru, mi smo za pet postova iz kategorije koja ima id 2 prikazali samo naslov i odječak. WP_Query WP_Query je klasa koja stoji iza svih upita koje smo do sada pominjali. Ako želite da znate malo više o tome šta ova klasa sadrži, možete pogledati wp-includes/query.php gdje je ova klasa definisana. Ovu klasu smo do sada koristili preko $wp_query koji je objekat ove klase. Mi, naravno, možemo i sami da napravimo naš WP_Query objekat. Pogledajte sledeće parče koda: $args = array('cat' => 2); $category_posts = new WP_Query($args); if($category_posts->have_posts()) : while($category_posts->have_posts()) : $category_posts->the_post(); ?> <?php endwhile; wp_reset_postdata(); else: ?> Nema postova!!! Na prvoj liniji koda smo napravili niz argumenata koje ćemo koristiti u našoj petlji. Ovdje samo želimo da uzmemo postove iz kategorije gdje je id 2. Na sledećoj liniji smo napravili novi WP_Query objekat sa željenim argumentima. Provjera postojanja postova i while petlja veoma liče na uobičajenu WordPress petlju, sa tom razlikom što se sve funkcije pozivaju na naš objekat umjesto podrazumijevanog. Kada se izađe iz petlje, poziva se wp_reset_postdata() da bi povratili prvobitnu $post promjenljivu. Savjeti za kraj Ako želite samo da promijenite podrazumijevanu petlju na nekoj vašoj stranici, možete koristiti query_posts(). Ali moj savjet vam je da ovu funkciju izbjegavate. Kada hoćete da dodate neku petlju ili čak više petlji možete, koristiti get_posts() funkciju. Ako vam to nije dovoljno, WP_Query() možete koristiti da promijenite petlju ili napravite više petlji na istoj stranici. Nadam se da smo uspjeli da vam malo približimo WordPress petlju i da vam pokažemo par načina kako iz nje možete dobiti tačno ono što vi želite.