{"id":9809,"date":"2013-04-24T18:50:19","date_gmt":"2013-04-24T18:50:19","guid":{"rendered":"http:\/\/musilda.cz\/?p=184"},"modified":"2013-04-24T18:50:19","modified_gmt":"2013-04-24T18:50:19","slug":"prihlasovaci-formular-jako-widget-do-sidebaru","status":"publish","type":"post","link":"https:\/\/affinite.io\/cs\/prihlasovaci-formular-jako-widget-do-sidebaru\/","title":{"rendered":"P\u0159ihla\u0161ovac\u00ed formul\u00e1\u0159 jako widget do sidebaru"},"content":{"rendered":"<p>Pokud jste ji\u017e \u0159e\u0161ili, jak umo\u017enit u\u017eivatel\u016fm, jak se p\u0159ihl\u00e1sit p\u0159\u00edmo z hlavn\u00ed strany internetov\u00e9 str\u00e1nky, ur\u010dit\u011b jste pou\u017eili jeden z voln\u011b dostupn\u00fdch plugin\u016f. My si dnes uk\u00e1\u017eeme, jak vytvo\u0159it widget bez nutnosti instalovat plugin. Widget si budeme moci zobrazit v jak\u00e9mkoliv definovan\u00e9m sidebaru.<\/p>\n<p>Nejprve si ve slo\u017ece \u0161ablony, kterou budeme pou\u017e\u00edvat, vytvo\u0159\u00edme slo\u017eku widgets. N\u00e1\u0161 widget si pojmenujeme Login Form, co\u017e asi nen\u00ed origin\u00e1ln\u00ed, ale pro na\u0161e pot\u0159eby to sta\u010d\u00ed. Do slo\u017eky ulo\u017e\u00edme soubor widget-login-form.php, kter\u00fd je zat\u00edm pr\u00e1zd\u00fd. Nyn\u00ed ho za\u010dneme zapl\u0148ovat.<\/p>\n<p>Na za\u010d\u00e1tek souboru vlo\u017e\u00edme \u00fadaje, s popisem a n\u00e1zvem widgetu. Tato \u010d\u00e1st je d\u016fle\u017eit\u00e1, podle n\u00ed wordpress definuje widget:<\/p>\n<pre lang=\"php\">\/*-----------------------------------------------------------------------------------\n\n\tPlugin Name: Sidebar login form\n\tPlugin URI:\n\tDescription: A widget with login form\n\tVersion: 1.0\n\tAuthor:\n\tAuthor URI:\n\n-----------------------------------------------------------------------------------*\/<\/pre>\n<p>N\u00e1sledn\u011b widget zaregistrujeme:<\/p>\n<pre lang=\"php\">\/\/ Register widget\nfunction vm_login_form_widgets() {\n\tregister_widget( 'vm_Login_Form_Widget' );\n}<\/pre>\n<p>P\u0159id\u00e1me incializaci widgetu:<\/p>\n<pre lang=\"php\">\/\/ Add function to widgets_init that'll load our widget\nadd_action( 'widgets_init', 'vm_login_form_widgets' );<\/pre>\n<p>V\u0161echny widgety vych\u00e1z\u00ed z t\u0159\u00eddy WP_Widget, kterou pomoc\u00ed nov\u00e9 t\u0159\u00eddy roz\u0161\u00ed\u0159\u00edme:<\/p>\n<pre lang=\"php\">\/\/ Widget class\nclass vm_login_form_widget extends WP_Widget {\n}<\/pre>\n<p>P\u0159\u00edpravu m\u00e1me hotovou a nyn\u00ed si do t\u0159\u00eddy vytvo\u0159\u00edme funkce, kter\u00e9 definuj\u00ed vlastn\u00ed widget.<br \/>\nVytvo\u0159\u00edme funkci se stejn\u00fdm n\u00e1zvem, kter\u00fd jsme pou\u017eili p\u0159i registraci widgetu a kter\u00e1 definuje z\u00e1kladn\u00ed vlastnosti widetu:<\/p>\n<pre lang=\"php\">function vm_Login_Form_Widget() {\n\n\t\/\/ Widget settings\n\t$widget_ops = array(\n\t\t'classname' =&gt; 'vm_login_form_widget',\n\t\t'description' =&gt; __('A widget display login form in sidebar.', 'theme')\n\t);\n\n\t\/\/ Widget control settings\n\t$control_ops = array(\n\t\t'width' =&gt; 259,\n\t\t'height' =&gt; 200,\n\t\t'id_base' =&gt; 'vm_login_form_widget'\n\t);\n\n\t\/\/ Create the widget\n\t$this-&gt;WP_Widget( 'vm_login_form_widget', __('Login Form', 'theme'),\n        $widget_ops, $control_ops );\n\n}<\/pre>\n<p>Ur\u010dit\u011b jste si v\u0161imli, \u017ee v\u0161echny texty, kter\u00e9 se budou zobrazovat, vkl\u00e1d\u00e1me pomoc\u00ed __(), co\u017e je funkce p\u0159ekladu, d\u00edky tomu umo\u017en\u00edte p\u0159\u00edpadn\u00fd p\u0159eklad \u0161ablony. Jak p\u0159ipravit \u0161ablonu pro p\u0159eklad bude t\u00e9ma jednoho z dal\u0161\u00edch \u010dl\u00e1nk\u016f, ale ji\u017e nyn\u00ed se budeme sna\u017eit d\u011blat widget p\u0159ipraven\u00fd na p\u0159eklad.<br \/>\nDal\u0161\u00ed funkc\u00ed bude samotn\u00fd widget:<\/p>\n<pre lang=\"php\">function widget( $args, $instance ) {\n\textract( $args );\n\n\t\/\/ Our variables from the widget settings\n\t$title = apply_filters('widget_title', $instance['title'] );\n\n\t\/\/ Before widget (defined by theme functions file)\n\techo $before_widget;\n\n\t\/\/ Display the widget title if one was input\n\tif ( $title )\n\techo $before_title . $title . $after_title;\n\n  if ( is_user_logged_in() ) { global $current_user; get_currentuserinfo();\n  echo '<\/pre>\n<p>&#8218;.__(&#8218;Login as:&#8216;,&#8217;theme&#8216;).&#8216; &#8218;.$current_user-&gt;user_login.&#8216;<br \/>\n<a href=\"'.wp_logout_url(home_url()).'\">&#8218;.__(&#8218;Logout&#8216;,&#8217;theme&#8216;).&#8216;<\/a><\/p>\n<pre lang=\"php\">';\n\n  }else{\n\n  echo'<\/pre>\n<p><label for=\"user_login\">&#8218;.__(&#8218;Username&#8216;,&#8217;theme&#8216;).&#8216;<br \/>\n<\/label><\/p>\n<p><label for=\"user_pass\">&#8218;.__(&#8218;Password&#8216;,&#8217;theme&#8216;).&#8216;<br \/>\n<\/label><\/p>\n<p class=\"submit\">\n<pre lang=\"php\">';\n\t}\n\n\t\/\/ After widget (defined by theme functions file)\n\techo $after_widget;\n}<\/pre>\n<p>Nejprve zjist\u00edme, zda je u\u017eivatel p\u0159ihl\u00e1\u0161en, pokud ano, zobraz\u00edme jeho nick a link na odhl\u00e1\u0161en\u00ed. Pokud nen\u00ed p\u0159ihl\u00e1\u0161en, zobraz\u00edme formul\u00e1\u0159.<br \/>\nP\u0159edposledn\u00ed funkc\u00ed, kterou budeme pot\u0159ebovat, je update, kter\u00e1 ukl\u00e1d\u00e1 zm\u011bny ve widgetu. My zde m\u00e1me jen title, proto\u017ee nic jin\u00e9ho nepot\u0159ebujeme:<\/p>\n<pre lang=\"php\">function update( $new_instance, $old_instance ) {\n\t$instance = $old_instance;\n\n\t\/\/ Strip tags to remove HTML (important for text inputs)\n\t$instance['title'] = strip_tags( $new_instance['title'] );\n\n\treturn $instance;\n}<\/pre>\n<p>Posledn\u00ed je samotn\u00fd formul\u00e1\u0159, kter\u00fd se bude zobrazovat po p\u0159id\u00e1n\u00ed widgetu do sidebaru v administraci:\u00a8<\/p>\n<pre lang=\"php\">function form( $instance ) {\n\n\t\/\/ Set up some default widget settings\n\t$defaults = array(\n\t\t'title' =&gt; '',\n\t);\n\n\t$instance = wp_parse_args( (array) $instance, $defaults ); ?&gt;<\/pre>\n<p><label for=\"&lt;?php echo $this-&gt;get_field_id( 'title' ); ?&gt;\"> <!--?php _e('Title:', 'theme') ?--> <\/label> <\/p>\n<pre lang=\"php\">\t<!--?php\n\t}&lt;\/pre&gt;\n&lt;p&gt;Posledn\u00ed co mus\u00edme ud\u011blat je vlo\u017eit do functions.phpp \u0159\u00e1dek s include widgetu:&lt;\/p&gt;\n&lt;pre lang=\"php\"&gt;include 'widgets\/widget-login-form.php';&lt;\/pre&gt;\n&lt;p&gt;T\u00edm m\u00e1me za sebou vytvo\u0159en\u00ed widgetu a pokud se nyn\u00ed pod\u00edv\u00e1me do administrace, uvid\u00edme mezi ostatn\u00edmi widgety&lt;br ?-->\n<a href=\"http:\/\/musilda.cz\/wp-content\/uploads\/2013\/04\/login-form-widget.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-185\" title=\"login form widget\" src=\"http:\/\/musilda.cz\/wp-content\/uploads\/2013\/04\/login-form-widget.png\" alt=\"\" width=\"275\" height=\"71\" \/><\/a><\/pre>\n<p>Po p\u0159eta\u017een\u00ed do sidebaru se widget rozbal\u00ed a m\u016f\u017eeme upravit titulek:<br \/>\n<a href=\"http:\/\/musilda.cz\/wp-content\/uploads\/2013\/04\/login-form.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-186\" title=\"login form\" src=\"http:\/\/musilda.cz\/wp-content\/uploads\/2013\/04\/login-form-300x139.png\" alt=\"\" width=\"300\" height=\"139\" \/><\/a><\/p>\n<p>Po ulo\u017een\u00ed se n\u00e1m p\u0159ihla\u0161ovac\u00ed formul\u00e1\u0159 kr\u00e1sn\u011b zobraz\u00ed v sidebaru:<br \/>\n<a href=\"http:\/\/musilda.cz\/wp-content\/uploads\/2013\/04\/login-widget.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-187\" title=\"login widget\" src=\"http:\/\/musilda.cz\/wp-content\/uploads\/2013\/04\/login-widget-300x234.png\" alt=\"\" width=\"300\" height=\"234\" \/><\/a><\/p>\n<p>Widget v akci si m\u016f\u017eete prohl\u00e9dnout <a href=\"http:\/\/www.novy.8u.cz\/\" target=\"_blank\" rel=\"noopener\">zde<\/a><br \/>\nV n\u011bkter\u00e9m z dal\u0161\u00edch \u010dl\u00e1nk\u016f si uk\u00e1\u017eeme, jak omezit p\u0159ihl\u00e1\u0161en\u00e9mu u\u017eivateli p\u0159\u00edstup do administrace.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pokud jste ji\u017e \u0159e\u0161ili, jak umo\u017enit u\u017eivatel\u016fm, jak se p\u0159ihl\u00e1sit p\u0159\u00edmo z hlavn\u00ed strany internetov\u00e9 str\u00e1nky, ur\u010dit\u011b jste pou\u017eili jeden z voln\u011b dostupn\u00fdch plugin\u016f. My si dnes uk\u00e1\u017eeme, jak vytvo\u0159it widget bez nutnosti instalovat plugin. Widget si budeme moci zobrazit v jak\u00e9mkoliv definovan\u00e9m sidebaru. Nejprve si ve slo\u017ece \u0161ablony, kterou budeme pou\u017e\u00edvat, vytvo\u0159\u00edme slo\u017eku widgets.<\/p>\n","protected":false},"author":1,"featured_media":8624,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","footnotes":""},"categories":[12,30],"tags":[413,415,502,528],"class_list":["post-9809","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-navody","category-wordpress","tag-widget","tag-widget-navod","tag-wordpress-navod","tag-wordpress-tutorial"],"acf":[],"uagb_featured_image_src":{"full":["https:\/\/affinite.io\/cs\/wp-content\/uploads\/sites\/2\/2013\/07\/wordpress-tutorial-musilda.png",1200,800,false],"thumbnail":["https:\/\/affinite.io\/cs\/wp-content\/uploads\/sites\/2\/2013\/07\/wordpress-tutorial-musilda-150x150.png",150,150,true],"medium":["https:\/\/affinite.io\/cs\/wp-content\/uploads\/sites\/2\/2013\/07\/wordpress-tutorial-musilda-300x200.png",300,200,true],"medium_large":["https:\/\/affinite.io\/cs\/wp-content\/uploads\/sites\/2\/2013\/07\/wordpress-tutorial-musilda-768x512.png",640,427,true],"large":["https:\/\/affinite.io\/cs\/wp-content\/uploads\/sites\/2\/2013\/07\/wordpress-tutorial-musilda-1024x683.png",640,427,true],"1536x1536":["https:\/\/affinite.io\/cs\/wp-content\/uploads\/sites\/2\/2013\/07\/wordpress-tutorial-musilda.png",1200,800,false],"2048x2048":["https:\/\/affinite.io\/cs\/wp-content\/uploads\/sites\/2\/2013\/07\/wordpress-tutorial-musilda.png",1200,800,false],"archive-list":["https:\/\/affinite.io\/cs\/wp-content\/uploads\/sites\/2\/2013\/07\/wordpress-tutorial-musilda-400x265.png",400,265,true]},"uagb_author_info":{"display_name":"Affinite","author_link":"https:\/\/affinite.io\/cs\/author\/affinite\/"},"uagb_comment_info":3,"uagb_excerpt":"Pokud jste ji\u017e \u0159e\u0161ili, jak umo\u017enit u\u017eivatel\u016fm, jak se p\u0159ihl\u00e1sit p\u0159\u00edmo z hlavn\u00ed strany internetov\u00e9 str\u00e1nky, ur\u010dit\u011b jste pou\u017eili jeden z voln\u011b dostupn\u00fdch plugin\u016f. My si dnes uk\u00e1\u017eeme, jak vytvo\u0159it widget bez nutnosti instalovat plugin. Widget si budeme moci zobrazit v jak\u00e9mkoliv definovan\u00e9m sidebaru. Nejprve si ve slo\u017ece \u0161ablony, kterou budeme pou\u017e\u00edvat, vytvo\u0159\u00edme slo\u017eku widgets.","_links":{"self":[{"href":"https:\/\/affinite.io\/cs\/wp-json\/wp\/v2\/posts\/9809","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/affinite.io\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/affinite.io\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/affinite.io\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/affinite.io\/cs\/wp-json\/wp\/v2\/comments?post=9809"}],"version-history":[{"count":0,"href":"https:\/\/affinite.io\/cs\/wp-json\/wp\/v2\/posts\/9809\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/affinite.io\/cs\/wp-json\/wp\/v2\/media\/8624"}],"wp:attachment":[{"href":"https:\/\/affinite.io\/cs\/wp-json\/wp\/v2\/media?parent=9809"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/affinite.io\/cs\/wp-json\/wp\/v2\/categories?post=9809"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/affinite.io\/cs\/wp-json\/wp\/v2\/tags?post=9809"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}