{"id":29418,"date":"2021-06-14T13:33:00","date_gmt":"2021-06-14T10:33:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29418"},"modified":"2021-10-18T03:32:40","modified_gmt":"2021-10-18T00:32:40","slug":"jak-dostosowac-formularz-komentarzy-w-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/jak-dostosowac-formularz-komentarzy-w-wordpress\/","title":{"rendered":"Jak dostosowa\u0107 formularz komentarzy w WordPress"},"content":{"rendered":"<p>WordPress zawiera w swoim rdzeniu formularz komentarza. Ten formularz komentarza b\u0119dzie zwykle wy\u015bwietlany w Twoich postach. Odwiedzaj\u0105cy mog\u0105 zostawi\u0107 swoj\u0105 opini\u0119 za pomoc\u0105 formularza komentarzy. Udost\u0119pnianie funkcji komentarzy dla odwiedzaj\u0105cych pomaga zrozumie\u0107, co my\u015bl\u0105 o Twoich tre\u015bciach. Pomo\u017ce to ulepszy\u0107 twoj\u0105 tre\u015b\u0107 i pracowa\u0107 nad innymi opiniami.<\/p>\n<p>Domy\u015blnie WordPress udost\u0119pnia pola, takie jak wiadomo\u015b\u0107, imi\u0119 i nazwisko, adres e-mail, witryna internetowa i pole wyboru (aby zapisa\u0107 swoje dane w przegl\u0105darce do nast\u0119pnego komentarza) w formularzu komentarza. W zale\u017cno\u015bci od wymaga\u0144 mo\u017ce by\u0107 konieczne dodanie lub usuni\u0119cie p\u00f3l z formularzy komentarzy.<\/p>\n<p>Mo\u017cna r\u00f3wnie\u017c doda\u0107 stylizacj\u0119 do renderowanego formularza komentarza. WordPress zapewnia unikaln\u0105 klas\u0119 p\u00f3l formularza i komentarza. Korzystaj\u0105c z tych klas, u\u017cytkownicy mog\u0105 stosowa\u0107 w\u0142asne style.<\/p>\n<p>W tym artykule zobaczymy, jak doda\u0107 jeszcze jedno pole do istniej\u0105cego formularza komentarzy. Jako przyk\u0142ad wezm\u0119 pole numeru telefonu kom\u00f3rkowego i dodam je do formularza. Tak wi\u0119c, aby dostosowa\u0107 formularz komentarza, wykonamy poni\u017csze kroki jeden po drugim.<\/p>\n<ul>\n<li>Dodaj pole do formularza komentarza<\/li>\n<li>Sprawd\u017a, czy pole jest puste, czy nie<\/li>\n<li>Zapisz to pole jako meta komentarza<\/li>\n<li>Wy\u015bwietl Meta Box w formularzu edycji komentarzy (na zapleczu)<\/li>\n<li>Zapisz meta komentarza (z zaplecza)<\/li>\n<\/ul>\n<p>Opr\u00f3cz tego poka\u017c\u0119 Ci r\u00f3wnie\u017c, jak usun\u0105\u0107 pole z formularza komentarza WordPress.<\/p>\n<h3>Dodaj pole do formularza komentarza<\/h3>\n<p>Formularz komentarza jest renderowany z podstawowych plik\u00f3w WordPressa i nie powinni\u015bmy dotyka\u0107 \u017cadnych plik\u00f3w podstawowych. Na szcz\u0119\u015bcie WordPress udost\u0119pnia haki rozszerzaj\u0105ce podstawowe funkcje. Mimo to WordPress udost\u0119pnia hak akcji, <code>comment_form_after_fields<\/code>za pomoc\u0105 kt\u00f3rego mo\u017cemy dodawa\u0107 pola do formularza komentarza.<\/p>\n<p>Dodajmy numer telefonu kom\u00f3rkowego za pomoc\u0105 tego haka akcji. Umie\u015b\u0107 poni\u017cszy kod w <code>functions.php<\/code>pliku.<\/p>\n<pre><code>add_action( 'comment_form_after_fields', 'additional_fields' );\nfunction additional_fields() {\n\u00a0\u00a0\u00a0\u00a0echo '&lt;p class=\"comment-form-mobile-number\"&gt;'. \u00a0\u00a0\u00a0\u00a0'&lt;label for=\"mobile-number\"&gt;'. esc_html__( 'Mobile Number' ). '&lt;span class=\"required\"&gt;*&lt;\/span&gt;&lt;\/label&gt;'. \u00a0\u00a0\u00a0\u00a0'&lt;input id=\"mobile-number\" name=\"mobile-number\" type=\"text\" size=\"30\" tabindex=\"5\" \/&gt;&lt;\/p&gt;';\n}<\/code><\/pre>\n<p>Teraz przejd\u017a do swojej strony internetowej i za\u0142aduj j\u0105 ponownie. Powiniene\u015b zobaczy\u0107 nowe pole \u201eNumer telefonu kom\u00f3rkowego&quot; dodane do twojego formularza komentarza.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20214-6081ce6c3a810.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20214-6081ce6c3a810.png\" alt=\"Jak dostosowa\u0107 formularz komentarzy w WordPress\" ><\/a><\/p>\n<h3>Sprawd\u017a, czy pole jest puste, czy nie<\/h3>\n<p>Ten krok jest opcjonalny. Je\u015bli nie chcesz, aby pole mobilne by\u0142o obowi\u0105zkowe, pomi\u0144 ten krok. Je\u015bli to pole jest wymagane, musimy sprawdzi\u0107, czy odwiedzaj\u0105cy je wype\u0142nili, czy nie. Aby doda\u0107 te sprawdzenia w czasie wykonywania, u\u017cyjemy filtru <code>preprocess_comment<\/code>. Gdy u\u017cytkownik kliknie przycisk przesy\u0142ania, ten filtr sprawdza, czy okre\u015blone pole jest puste, czy nie. Je\u015bli jest pusty, zatrzymuje wykonywanie i wy\u015bwietla komunikat u\u017cytkownikom.<\/p>\n<p>U\u017cyj filtra, <code>preprocess_comment<\/code>jak pokazano w poni\u017cszym kodzie. Ten kod r\u00f3wnie\u017c wchodzi do <code>functions.php<\/code>pliku.<\/p>\n<pre><code>add_filter( 'preprocess_comment', 'verify_comment_mobile_number' );\nfunction verify_comment_mobile_number( $commentdata) {\n\u00a0\u00a0\u00a0\u00a0if (empty( $_POST['mobile-number'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_die( esc_html__( 'Error: You did not add a mobile number. Please resubmit your comment with a mobile number.') );\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0return $commentdata;\n}<\/code><\/pre>\n<h3>Zapisz nowe pole przed komentarzem<\/h3>\n<p>W poprzednich krokach dodali\u015bmy nowe pole, a tak\u017ce zobaczyli\u015bmy, jak uczyni\u0107 je obowi\u0105zkowym. Teraz powinni\u015bmy zapisa\u0107 to pole w bazie danych pod tym samym komentarzem. Aby to osi\u0105gn\u0105\u0107, u\u017cyjemy akcji <code>comment_post<\/code>. Ta akcja daje nam identyfikator aktualnie przes\u0142anego komentarza. Korzystaj\u0105c z id komentarza, mo\u017cemy zapisa\u0107 nasze pole mobilne z <code>add_comment_meta<\/code>funkcj\u0105.<\/p>\n<pre><code>add_action( 'comment_post', 'save_comment_mobile_number' );\nfunction save_comment_mobile_number( $comment_id) {\n\u00a0\u00a0\u00a0\u00a0if (( isset( $_POST['mobile-number'])) &amp;&amp; (! empty( $_POST['mobile-number']) )) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$mobile_number = wp_filter_nohtml_kses($_POST['mobile-number']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_comment_meta( $comment_id, 'mobile-number', $mobile_number );\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Tutaj u\u017cy\u0142em <code>wp_filter_nohtml_kses<\/code>funkcji do oczyszczenia wprowadzonych danych.<\/p>\n<h3>Wy\u015bwietl Meta Box w formularzu edycji komentarzy (na zapleczu)<\/h3>\n<p>Jak dot\u0105d sko\u0144czyli\u015bmy z dodawaniem nowego pola do formularza komentarza frontendowego i zapisywaniem tego nowo dodanego pola. Teraz jako administrator powiniene\u015b widzie\u0107 to pole na zapleczu.<\/p>\n<p>Je\u015bli przejdziesz do listy komentarzy na zapleczu, zobaczysz, \u017ce ka\u017cdy komentarz ma sw\u00f3j w\u0142asny formularz edycji. Z tego formularza administrator mo\u017ce edytowa\u0107 komentarz. Naszym nast\u0119pnym celem jest pokazanie numeru telefonu kom\u00f3rkowego w tym formularzu edycji komentarza.<\/p>\n<p>W tym celu dodam metabox, pod kt\u00f3rym umie\u015bcimy numer telefonu kom\u00f3rkowego. U\u017cyj poni\u017cszego kodu, <code>functions.php<\/code>kt\u00f3ry doda metabox z numerem telefonu kom\u00f3rkowego.<\/p>\n<pre><code>add_action( 'add_meta_boxes_comment', 'comment_add_meta_box' );\nfunction comment_add_meta_box() {\n\u00a0\u00a0\u00a0\u00a0add_meta_box( 'title', __( 'Comment Metadata' ), 'comment_meta_box', 'comment', 'normal', 'high' );\n}\n\u00a0\nfunction comment_meta_box( $comment) {\n\u00a0\u00a0\u00a0\u00a0$mobile_number = get_comment_meta( $comment-&gt;comment_ID, 'mobile-number', true );\n\u00a0\u00a0\u00a0\u00a0wp_nonce_field( 'comment_update', 'comment_update_nonce', false );\n\u00a0\u00a0\u00a0\u00a0?&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"mobile-number\"&gt;&lt;?php esc_html_e( 'Mobile Number' ); ?&gt;&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"mobile-number\" value=\"&lt;?php echo esc_attr( $mobile_number ); ?&gt;\" class=\"widefat\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;?php\n}<\/code><\/pre>\n<h3>Zapisz meta komentarza (z zaplecza)<\/h3>\n<p>Prawie sko\u0144czyli\u015bmy z zadaniem. Ostatni\u0105 rzecz\u0105, kt\u00f3ra pozostaje, jest edycja numeru telefonu kom\u00f3rkowego, gdy administrator go zaktualizuje. Mo\u017cna to \u0142atwo zrobi\u0107 za pomoc\u0105 <code>edit_comment<\/code>dzia\u0142ania w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<pre><code>add_action( 'edit_comment', 'comment_edit_metafields' );\nfunction comment_edit_metafields( $comment_id) {\n\u00a0\u00a0\u00a0\u00a0if (! isset( $_POST['comment_update_nonce']) ||! wp_verify_nonce( $_POST['comment_update_nonce'], 'comment_update')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if (( isset( $_POST['mobile-number'])) &amp;&amp; (! empty( $_POST['mobile-number'])) ): \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$mobile_number = wp_filter_nohtml_kses( $_POST['mobile-number'] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0update_comment_meta( $comment_id, 'mobile-number', $mobile_number );\n\u00a0\u00a0\u00a0\u00a0else: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0delete_comment_meta( $comment_id, 'mobile-number' );\n\u00a0\u00a0\u00a0\u00a0endif;\n}<\/code><\/pre>\n<p>Wszystko sprowadza si\u0119 do dodania nowego pola poprzez dostosowanie formularza komentarza w WordPress. Zobaczmy teraz, jak mo\u017cna usun\u0105\u0107 pola z formularza komentarza.<\/p>\n<h3>Usu\u0144 pole z formularza komentarza w WordPress<\/h3>\n<p>Jak wszyscy wiemy, WordPress udost\u0119pnia kilka p\u00f3l (wiadomo\u015b\u0107, imi\u0119, adres e-mail, strona internetowa i pole wyboru) w formularzu komentarza. Mo\u017cesz usun\u0105\u0107 dowolny z nich. Za\u0142\u00f3\u017cmy, \u017ce chcesz usun\u0105\u0107 pole witryny z formularza. Mo\u017cemy to zrobi\u0107 za pomoc\u0105 filtra comment_form_default_fields. Powiniene\u015b zna\u0107 klucz pola strony. Teraz pytanie brzmi, jak zdoby\u0107 klucze p\u00f3l formularza komentarza.<\/p>\n<p>Robi\u0119 to zapisuj\u0105c pola do fikcyjnego pliku tekstowego.<\/p>\n<pre><code>add_filter('comment_form_default_fields', 'remove_comment_form_fields');\nfunction remove_comment_form_fields($fields) {\n\u00a0\u00a0\u00a0\u00a0file_put_contents('test.txt', print_r($fields, true));\n}<\/code><\/pre>\n<p>Teraz, je\u015bli prze\u0142adujesz stron\u0119, kt\u00f3ra ma formularz komentarza, plik <code>test.txt<\/code>zostanie utworzony w folderze g\u0142\u00f3wnym. W moim przypadku ten plik ma nast\u0119puj\u0105c\u0105 zawarto\u015b\u0107.<\/p>\n<pre><code>Array (\u00a0\u00a0\u00a0\u00a0[author] =&gt; &lt;p class=\"comment-form-author\"&gt;&lt;label for=\"author\"&gt;Name &lt;span class=\"required\"&gt;*&lt;\/span&gt;&lt;\/label&gt; &lt;input id=\"author\" name=\"author\" type=\"text\" value=\"\" size=\"30\" maxlength=\"245\" required='required' \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0[email] =&gt; &lt;p class=\"comment-form-email\"&gt;&lt;label for=\"email\"&gt;Email &lt;span class=\"required\"&gt;*&lt;\/span&gt;&lt;\/label&gt; &lt;input id=\"email\" name=\"email\" type=\"email\" value=\"\" size=\"30\" maxlength=\"100\" aria-describedby=\"email-notes\" required='required' \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0[url] =&gt; &lt;p class=\"comment-form-url\"&gt;&lt;label for=\"url\"&gt;Website&lt;\/label&gt; &lt;input id=\"url\" name=\"url\" type=\"url\" value=\"\" size=\"30\" maxlength=\"200\" \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0[cookies] =&gt; &lt;p class=\"comment-form-cookies-consent\"&gt;&lt;input id=\"wp-comment-cookies-consent\" name=\"wp-comment-cookies-consent\" type=\"checkbox\" value=\"yes\" \/&gt; &lt;label for=\"wp-comment-cookies-consent\"&gt;Save my name, email, and website in this browser for the next time I comment.&lt;\/label&gt;&lt;\/p&gt;\n)<\/code><\/pre>\n<p>Wyra\u017anie podaje klucze p\u00f3l formularza. Dla pola strony kluczem jest \u201eurl&#8221;. Zmodyfikuj\u0119 wi\u0119c powy\u017cszy kod w nast\u0119puj\u0105cy spos\u00f3b, co spowoduje usuni\u0119cie pola witryny z formularza komentarza.<\/p>\n<pre><code>add_filter('comment_form_default_fields', 'remove_comment_form_fields');\nfunction remove_comment_form_fields($fields) {\n\u00a0\u00a0\u00a0\u00a0if(isset($fields['url'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0unset($fields['url']);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0return $fields;\n}<\/code><\/pre>\n<p>W ten sam spos\u00f3b mo\u017cesz r\u00f3wnie\u017c usun\u0105\u0107 inne pola formularza komentarza.<\/p>\n<p>Mam nadziej\u0119, \u017ce rozumiesz, jak dostosowa\u0107 formularz komentarzy w WordPress. Podziel si\u0119 swoimi przemy\u015bleniami i sugestiami w sekcji komentarzy poni\u017cej.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/wyswietlaj-posty-z-okreslonej-kategorii-na-stronie-wordpress\/\" title=\"Wy\u015bwietlaj posty z okre\u015blonej kategorii na stronie WordPress\" >Wy\u015bwietlaj posty z okre\u015blonej kategorii na stronie WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-dodac-uklad-siatki-murowanej-w-wordpress\/\" title=\"Jak doda\u0107 uk\u0142ad siatki murowanej w WordPress\" >Jak doda\u0107 uk\u0142ad siatki murowanej w WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-wyeksportowac-posty-do-csv-w-wordpress\/\" title=\"Jak eksportowa\u0107 posty do CSV w WordPress\" >Jak eksportowa\u0107 posty do CSV w WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Czy chcesz dostosowa\u0107 formularz komentarzy w WordPress? W tym artykule przyjrzymy si\u0119 niekt\u00f3rym hakom akcji i filtr\u00f3w, kt\u00f3re pomog\u0105 nam dostosowa\u0107<\/p>\n","protected":false},"author":1,"featured_media":21625,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[612],"tags":[847],"class_list":["post-29418","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=29418"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29418\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/21625"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=29418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=29418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=29418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}