მთავარი თამაშები ცვლილებების შეტანა WooCommerce შაბლონის ფაილებში. მნიშვნელოვანი! WooCommerce შაბლონის ფაილებში ცვლილებების შეტანა Balaganny დაამატეთ მიმოხილვა php

ცვლილებების შეტანა WooCommerce შაბლონის ფაილებში. მნიშვნელოვანი! WooCommerce შაბლონის ფაილებში ცვლილებების შეტანა Balaganny დაამატეთ მიმოხილვა php

შაბლონები WooCommerce ფაილებიშეიცავს ინტერფეისის შაბლონის მარკირებას და სტრუქტურას (და HTML შეტყობინებებს ელ) თქვენი მაღაზიის. თუ ამ ფაილებს გახსნით, შეამჩნევთ, რომ ისინი ყველა შეიცავს ბევრ კაუჭს, რომელიც საშუალებას მოგცემთ დაამატოთ/გადაიტანოთ შინაარსი შაბლონის ფაილების თავად რედაქტირების გარეშე. ეს მიდგომა იცავს განახლებებთან დაკავშირებული პრობლემებისგან, რადგან შაბლონის ფაილები შეიძლება დარჩეს სრულიად ხელუხლებელი.

გარდა ამისა, შეგიძლიათ ამ ფაილების რედაქტირება უსაფრთხო გზითჩანაცვლების გამოყენებით. უბრალოდ დააკოპირეთ ისინი თქვენს შაბლონში საქაღალდეში, სახელწოდებით /woocommerce, შეინარჩუნეთ ქვეფაილების და საქაღალდეების იგივე იერარქიული სტრუქტურა.

დაკოპირებული შაბლონის ფაილები გადალახავს WooCommerce-ის ნაგულისხმევი შაბლონის ფაილებს. არ დაარედაქტიროთ შაბლონის ფაილები თავად მოდულის ბირთვში, რადგან ისინი გადაიწერება განახლების პროცესში და მათში შეტანილი ნებისმიერი ცვლილება დაიკარგება, რადგან განახლებული შაბლონის ფაილები გადაწერს ძველ შაბლონის ფაილებს.თუ გსურთ ცვლილებების შეტანა რომელიმე შაბლონში , მაშინ არ არის საჭირო შაბლონების საქაღალდეში მდებარე ყველა შაბლონის ფაილის კოპირება, მაგრამთქვენ მხოლოდ უნდა დააკოპიროთ შაბლონის ფაილი, რომელშიც გსურთ ცვლილებების შეტანა

. ამისათვის შექმენით woocommerce საქაღალდე თქვენი თემის დირექტორიადან და გადაიტანეთ შაბლონი მასში, დააკვირდით საქაღალდეების ბუდეებს. მაგალითი: კალათის შაბლონში ცვლილებების შესატანად დააკოპირეთ woocommerce/templates/cart/cart.php ვ . ამის შემდეგ შეგიძლიათ შეიტანოთ ცვლილებები შაბლონის ფაილში cart.php , რომელიც მდებარეობს თქვენი თემის საქაღალდეში (ე.ი. ფაილში cart.php, მდებარეობს your_theme/woocommerce/cart/cart.php


), და თქვენ მიერ შეტანილი ცვლილებები დარჩება WooCommerce-ის განახლების შემდეგაც.

დირექტორიაში /woocommerce/templates შეგიძლიათ იპოვოთ შემდეგი შაბლონის ფაილები

სპოილერი: ფაილების სია

(შაბლონის ფაილების ეს სია შესაბამისია WooCommerce 2.0+-ისთვის):

· არქივი-პროდუქტი.php


კალათა/

· cart-empty.php

ჯვარედინი ყიდის.php

მინი კალათა.php

shipping-calculator.php

shipping-methods.php


· შეადგენს.php


გადახდა/

cart-errors.php

ფორმა-ბილინგი.php

form-checkout.php

ფორმა-კუპონი.php

form-login.php

form-pay.php

form-shipping.php

განხილვა-შეკვეთა.php

· content-product_cat.php

შინაარსი-პროდუქტი.php

· content-single-product.php​


· ელფოსტა/


· admin-new-order.php

· დამკვეთის დასრულებული შეკვეთა.php

· დამკვეთი-ინვოისი.php

· customer-new_account.php

კლიენტი-შენიშვნა.php

· დამკვეთის დამუშავება-ბრძანება.php

· კლიენტის გადაყენება-პაროლი.php

ელფოსტის მისამართები.php

email-footer.php

email-header.php

· email-order-items.php​


· მარყუჟი/


add-to-cart.php

loop-end.php

loop-start.php

no-products-found.php

პაგინაცია.php

result-count.php

· sale-flash.php


· ჩემი ანგარიში/


form-change-password.php

form-edit-address.php

ფორმა-კუპონი.php

form-lost-password.php

my-account.php

my-address.php

my-downloads.php

my-orders.php


· შეკვეთა/


form-tracking.php

შეკვეთა-დეტალები.php

· თვალყურის დევნება.php​


· მაღაზია/


breadcrumb.php

ფორმა-კუპონი.php

შეტყობინებები.php

wrapper-end.php

WordPress ნიშნავს პერსონალიზაციას/მორგებას. იგი შეიქმნა ისე, რომ აბსოლუტურად ყველა განყოფილების მორგება შესაძლებელია. ამ გაკვეთილში ჩვენ განვიხილავთ პირადი პოსტის ტიპები, WordPress-ის ერთ-ერთი ყველაზე მნიშვნელოვანი და ღირსშესანიშნავი მახასიათებელი, რომლის დახმარებით WordPress-მა შეძლო ახალი სიმაღლეების მიღწევა.

რა არის მორგებული პოსტის ტიპები?

ვთქვათ, გსურთ, რომ თქვენს ბლოგს ჰქონდეს ცალკე განყოფილება ფილმების მიმოხილვისთვის. მორგებული პოსტის ტიპების გამოყენებით შეგიძლიათ შექმნათ ახალი ტიპი, მაგალითად, პოსტები და გვერდები, რომელიც შეიცავს სხვადასხვა ტიპის მონაცემებს. მას ექნება საკუთარი ადმინისტრატორის მენიუ, სპეციალური გვერდები რედაქტირებისთვის, საკუთარი ტაქსონომიები და მრავალი სხვა ინსტრუმენტი, რომელიც საჭიროა პუბლიკაციებთან სრული მუშაობისთვის.

მორგებული პოსტის ტიპები არის ადმინისტრატორის პარამეტრების დამატებითი ნაკრები, რომელიც არსებობს ნაგულისხმევი პოსტის ტიპების პარამეტრებთან ერთად, როგორიცაა ჩანაწერები, გვერდები, მიმაგრებული ფაილებიდა ა.შ. მორგებული პოსტის ტიპებს შეუძლიათ შეინახონ ნებისმიერი ტიპის მონაცემები. მათ აქვთ ცალკე რედაქტორი, მედია ამტვირთავი და იყენებენ WordPress ცხრილის წინასწარ არსებულ სტრუქტურას, რაც აადვილებს მონაცემთა მართვას. მიერ შექმნილი პერსონალური პოსტის ტიპების მთავარი სარგებელი WordPress დახმარება API მდგომარეობს მათ თავსებადობაში არსებულ თემებთან და შაბლონებთან. ასევე, პერმალინკების გამოყენების წყალობით, პოსტების მორგებული ტიპები კარგად ურთიერთობენ საძიებო სისტემებთან.

რატომ გამოვიყენოთ პირადი პოსტის ტიპები?

მორგებული პოსტის ტიპები დაგეხმარებათ შენახვაში სხვადასხვა ტიპისჩანაწერები სხვადასხვა ადგილას. ეს ხელს უწყობს რეგულარული პოსტების სხვებისგან განცალკევებას. ესე იგი.

მოდულის შექმნა პირადი პოსტის ტიპისთვის

ჩვენ შევქმნით დანამატს პირადი პოსტის ტიპისთვის, რომელიც აჩვენებს ფილმების საუკეთესო მიმოხილვებს. დავიწყოთ.

ნაბიჯი 1. შექმენით საქაღალდე WordPress მოდულისთვის

გახსენით საქაღალდე WordPress დანამატებიდა შექმნა ახალი საქაღალდე ფილმი-მიმოხილვები.

ნაბიჯი 2: შექმენით PHP ფაილი

შექმნილ საქაღალდეში შექმენით PHP ფაილი Movie-Reviews.php

ნაბიჯი 3: დაამატეთ სათაური

გახსენით შექმნილი ფაილი და ჩასვით სათაურის კოდი ზედა ნაწილში.

PHP ბრძანების დახურვის ტეგამდე, შეიყვანეთ კოდის შემდეგი ხაზი create_movie_review. როდესაც ინიციალიზდება, ის განახორციელებს შესაბამის პერსონალურ ფუნქციას ყოველ ჯერზე, როდესაც გვერდი გენერირებულია.

Add_action("init", "create_movie_review");

ნაბიჯი 5: შეასრულეთ ფუნქცია

კოდი create_movie_review ფუნქციის შესასრულებლად.

ფუნქცია create_movie_review() ( register_post_type("movie_reviews", array("labels" => array("name" => "ფილმის მიმოხილვები", "singular_name" => "ფილმის მიმოხილვა", "add_new" => "ახლის დამატება", "add_new_item" => "ახალი ფილმის მიმოხილვის დამატება", "რედაქტირება" => "რედაქტირება", "edit_item" => "ფილმის მიმოხილვის რედაქტირება", "new_item" => "ახალი ფილმის მიმოხილვა", "ნახვა" => "ნახვა ", "view_item" => "ფილმის მიმოხილვის ნახვა", "search_items" => "მოძებნე ფილმის მიმოხილვები", "not_found" => "ფილმის მიმოხილვები არ მოიძებნა", "not_found_in_trash" => "ფილმის მიმოხილვები არ მოიძებნა ურნაში", "parent" => "მშობლის ფილმის მიმოხილვა"), "public" => true, "menu_position" => 15, "supports" => array("სათაური", "რედაქტორი", "კომენტარები", "მინიატურა", " მორგებული ველები"), "ტაქსონომიები" => მასივი (""), "menu_icon" => plugins_url ("images/image.png", __FILE__), "has_archive" => მართალია));

Register_post_type ფუნქცია შეასრულებს სამუშაოს უმეტესობას ჩვენს შემთხვევაში. გამოძახებისთანავე მოამზადებს WordPress-ის კონფიგურაციას, რომელიც აუცილებელია მომხმარებლის ახალი პოსტისთვის, ადმინისტრატორისთვის დამატებითი სექციების ჩათვლით. ფუნქციას გადაეცემა ორი ტიპის არგუმენტი: პირადი პოსტის ტიპის უნიკალური სახელი და მასივი თავისი თვისებებით. ეს არის კიდევ ერთი მასივი სხვადასხვა ეტიკეტებით, რომელიც მიუთითებს, თუ რომელი ტექსტის სტრიქონები იქნება ნაჩვენები მორგებული პოსტის ტიპის სხვადასხვა ნაწილში, მაგალითად: "name" აჩვენებს პერსონალური პოსტის ტიპის სახელს მართვის პანელში, "რედაქტირება" და "ნახვა" ჩვენების ღილაკები რედაქტირებადა ხედი. ვფიქრობ, ყველა სხვა არგუმენტი თავისთავად საუბრობს.

ასე რომ, შემდეგ არგუმენტებში:

  • "public" => true ადგენს პერსონალური პოსტის ტიპის ხილვადობას როგორც ადმინისტრაციულ პანელში, ასევე წინა ბოლოში.
  • "menu_position" => 15 განსაზღვრავს, თუ სად იქნება მენიუში მორგებული პოსტის ტიპი.
  • "supports" => array ("სათაური", "რედაქტორი", "კომენტარები", "მინიატურა", "მორგებული ველები") განსაზღვრავს პოსტის ტიპის ატრიბუტებს, რომლებიც გამოჩნდება.
  • "taxonomies" => მასივი("") ქმნის მორგებულ ტაქსონომიებს. ამ შემთხვევაში ისინი არ არის განსაზღვრული.
  • "menu_icon" => plugins_url("images/image.png", __FILE__) აჩვენებს ხატულას ადმინისტრატორის მენიუში.
  • "has_archive" => true საშუალებას გაძლევთ დაარქივოთ პოსტების ტიპები.

თქვენ შეგიძლიათ გაიგოთ მეტი სხვა არგუმენტების შესახებ, რომლებიც გამოიყენება პირადი პოსტის ტიპებში WordPress Codex register_post_type გვერდზე.

ნაბიჯი 6: ხატულა პირადი პოსტის ტიპისთვის

შეინახეთ 16x16 პიქსელის ხატულა თქვენს დანამატის საქაღალდეში. ეს აუცილებელია იმისათვის, რომ პერსონალური პოსტის ტიპს ჰქონდეს ხატულა მართვის პანელზე.

ნაბიჯი 7: გაააქტიურეთ დანამატი

გააქტიურეთ დანამატი და voila, თქვენ გაქვთ პირადი პოსტის ტიპი ტექსტის რედაქტირების შესაძლებლობით, პოსტების პარამეტრები, სურათები, კომენტარები და ველის მორგებული რედაქტორი.

ნაბიჯი 8: დაამატეთ ახალი ჩანაწერი

აირჩიეთ დაამატეთ ახალიპირადი პოსტის ტიპის რედაქტირების პანელის გასახსნელად. დაამატეთ ფილმის სათაური, გადახედეთ ტექსტს და აირჩიეთ სურათის ესკიზი.

ნაბიჯი 9: გამოქვეყნება

გამოაქვეყნეთ პოსტი და დააკლიკეთ ფილმის მიმოხილვის ნახვაშექმნილი ფილმის მიმოხილვის სანახავად.

დამატებითი ველების შექმნა პირადი პოსტის ტიპებისთვის

დამატებითი ველების (მეტაბოქსების) მექანიზმი იყენებს WordPress-ში ჩაშენებულ დამატებითი ველების სისტემას. ეს გეხმარებათ დაამატოთ ველები, რომლებიც სპეციფიკურია პირადი პოსტების ტიპებისთვის, რედაქტორში ნაგულისხმევი მორგებული ველების გამოყენების გარეშე.

ნაბიჯი 1: დაარეგისტრირეთ მორგებული ფუნქცია

გახსენით ფაილი Movie-Reviews.phpდა დაამატეთ შემდეგი კოდი დახურვის ტეგამდე. ეს კოდი რეგისტრირებს ფუნქციას, რომელიც გამოიძახება WordPress-ის ადმინისტრაციული პანელის მონახულებისას.

Add_action("admin_init", "my_admin");

ნაბიჯი 2: შეასრულეთ მორგებული ფუნქცია

დაამატეთ ფუნქციის შესრულება my_admin, რომელიც არეგისტრირებს დამატებით ველებს და აკავშირებს მათ movie_reviews პერსონალური პოსტის ტიპთან.

ფუნქცია my_admin() ( add_meta_box ("movie_review_meta_box", "ფილმის მიმოხილვის დეტალები", "display_movie_review_meta_box", "movie_reviews", "normal", "high"); )

ამ შემთხვევაში, add_meta_box ფუნქცია გამოიყენება პერსონალური პოსტის ტიპზე დამატებითი ველების დასამატებლად. ატრიბუტების შესახებ:

  • movie_review_meta_box საჭირო ატრიბუტი HTML id-ისთვის
  • ფილმის მიმოხილვის დეტალების ტექსტი, რომელიც ხილული იქნება დამატებითი ველის სათაურში
  • display_movie_review_meta_box გამოძახების ფუნქცია, რომელიც აჩვენებს დამატებითი ველების შინაარსს
  • movie_review არის პირადი პოსტის ტიპის სახელი, სადაც ნაჩვენები იქნება დამატებითი ველები
  • ნორმალური განსაზღვრავს, თუ სად გამოჩნდება გვერდზე რედაქტირების ბლოკი
  • მაღალი განსაზღვრავს ნაჩვენები ველების პრიორიტეტს

ნაბიჯი 3: შეასრულეთ ფუნქცია display_movie_review_meta_box

ID, "ფილმის_რეჟისორი", true));
$movie_rating = intval(get_post_meta($movie_review->ID, "movie_rating", true));
კინოს რეჟისორი

ვარსკვლავებიეს კოდი აჩვენებს დამატებითი ველების შინაარსს. ეს იყენებს ობიექტის ცვლადს, რომელიც შეიცავს ინფორმაციას რედაქტირების პანელში ნაჩვენები თითოეული ფილმის მიმოხილვის შესახებ. ამ ობიექტის გამოყენებით მივიღეთ

პოსტის ID

და გამოიყენა იგი მონაცემთა ბაზაში რეჟისორის სახელისა და რეიტინგის მისაღებად, რაც თავის მხრივ ეკრანზე ველებში გამოისახებოდა. ახალი პოსტის დამატებისას, get_post_meta ფუნქცია დააბრუნებს ცარიელ სტრიქონს და დამატებითი ველები ცარიელი იქნება.

ნაბიჯი 4: დაარეგისტრირეთ ჩანაწერის შენახვის ფუნქცია

add_action("შენახვა_პოსტი", "ფილმის_მიმოხილვის_ველების დამატება", 10, 2);

ეს ფუნქცია გამოიძახება, როდესაც ჩანაწერი ინახება მონაცემთა ბაზაში.

ნაბიჯი 5: შეასრულეთ add_movie_review_fields ფუნქცია

ფუნქცია add_movie_review_fields($movie_review_id, $movie_review) ( // შეამოწმეთ პოსტის ტიპი ფილმის მიმოხილვებისთვის, თუ ($movie_review->post_type == "movie_reviews") ( // მონაცემების შენახვა პოსტ მეტა ცხრილში, თუ ეს არის პოსტის მონაცემებში, თუ (isset($ _POST["movie_review_director_name"]) && $_POST["movie_review_director_name"] != "") (update_post_meta($movie_review_id, "movie_director", $_POST["movie_review_director_name"]); ]) && $_POST["movie_review_rating"] != "") ( update_post_meta($movie_review_id, "movie_rating", $_POST["movie_review_rating"]); ) ) )

პერსონალური პოსტის ტიპის შექმნისას ჩვენ დავაზუსტეთ create_movie_review ფუნქცია. ამოიღეთ custom-fields ელემენტი მხარდაჭერის მასივიდან, რადგან ის აღარ დაგვჭირდება. ახლა თუ შეინახავთ ფაილს და გახსენით რედაქტირების პანელი ფილმის მიმოხილვები, დამატებით ველებში ნახავთ ორ ველს: ფილმის ავტორიდა ფილმის რეიტინგი. თქვენ შეგიძლიათ დაამატოთ სხვა ელემენტები იმავე გზით.

შექმენით შაბლონი პირადი პოსტის ტიპისთვის

სწორი იქნებოდა თითოეული ტიპის მომხმარებლის ჩანაწერი გამოიყენოს საკუთარი შაბლონები მონაცემების ჩვენებისთვის. ჩვენს შემთხვევაში, ჩვენ შევქმნით შაბლონს, რომელიც აჩვენებს ყველა ფილმის მიმოხილვას, რომელიც დამატებულია პირადი პოსტის ტიპის გამოყენებით ფილმის მიმოხილვა.

ნაბიჯი 1: დაარეგისტრირეთ შაბლონის გაშვების ფუნქცია

გახსენით ფაილი Movie-Reviews.phpდა დახურვის ტეგამდე დაამატეთ შემდეგი კოდი. ეს კოდი რეგისტრირებს ფუნქციას, რომელიც გამოიძახება WordPress-ის ადმინისტრაციული პანელის მონახულებისას.

Add_filter("თარგი_შეიცავს", "შეიცავს_თარგის_ფუნქციას", 1);

ნაბიჯი 2: შეასრულეთ ფუნქცია

ფუნქცია include_template_function($template_path) ( if (get_post_type() == "movie_reviews") ( if (is_single()) ( // ამოწმებს, არის თუ არა ფაილი თემაში პირველ რიგში, // წინააღმდეგ შემთხვევაში, ემსახურება ფაილს დანამატიდან, თუ ($ theme_file = locate_template (მასივი ("single-movie_reviews.php"))) ( $template_path = $theme_file; ) else ($template_path = plugin_dir_path(__FILE__) . "/single-movie_reviews.php"; )_path return $template )

ეს ამოწმებს, აქვს თუ არა მიმდინარე თემის საქაღალდეს მსგავსი შაბლონი single-(post-type-name).php. თუ ის იქ არ არის, მაშინ მოწმდება შაბლონის არსებობა მოდულის საქაღალდეში, სადაც განვათავსებთ ჩვენს შაბლონს, როგორც მოდულის ნაწილად. template_include მოვლენის დამმუშავებელი (hook) გამოიყენება პროგრამის ნორმალური შესრულების შესაცვლელად და სპეციალური შაბლონის გასაშვებად.

ნაბიჯი 3: შექმენით ერთი გვერდიანი შაბლონის ფაილი

ადრე გახსნილი ფაილის დანამატით შენახვის შემდეგ შექმენით სხვა ფაილი ე.წ single-movie_reviews.phpდა ჩასვით მასში შემდეგი კოდი.

"ფილმის_მიმოხილვები");$loop = ახალი WP_Query ($mypost);
>
?>
have_posts()) : $loop->the_post();?>
სათაური: რეჟისორი: "; } } ?>

რეიტინგი:

";) სხვა (ექო": თქვენ უნდა შექმნათ ახალი გვერდი მართვის პანელიდან შექმნილი შაბლონის გამოყენებით.

ნაბიჯი 4: სურათები

შეინახეთ ორი 32x32 პიქსელიანი ვარსკვლავის ხატულა თქვენს დანამატის საქაღალდეში. დაასახელეთ ისინი შესაბამისად icon.pngდა grey.png. სულ ესაა, ახლა ფილმების მიმოხილვები ნაჩვენებია ცალკე გვერდზე და დალაგებულია თარიღის მიხედვით.

ჩვენ ასევე ჩავრთავთ პოსტის რედაქტორის ფუნქციას მორგებული ველები (მორგებული ან მორგებული ველები)თითოეული ტიპისთვის და აჩვენეთ ველები ახალ შაბლონებში.

WordPress-ში, პირადი პოსტის ტიპები გაძლევთ სრულ კონტროლს იმაზე, თუ როგორ აჩვენოთ შინაარსი თქვენს მომხმარებლებს. თუ თქვენ ქმნით პოსტებს თქვენს ბლოგზე, შეგიძლიათ შექმნათ მორგებული სტილი მხოლოდ ამ პოსტებისთვის. თუ თქვენ წერთ მიმოხილვებს მუსიკის ან ფილმების შესახებ, შეგიძლიათ დაამატოთ დამატებითი შეყვანის არეები თქვენთვის სასურველ პოსტებში და ისინი არ გამოჩნდება ბლოგის სხვა პოსტებში.

მაგრამ სანამ გავაგრძელებთ, მოდით გავიგოთ რა არის მომხმარებლის პოსტები.

რა არის WordPress პერსონალური პოსტის ტიპები?

მოკლედ, WordPress პერსონალური პოსტის ტიპები საშუალებას გაძლევთ დაალაგოთ პოსტები მათი შინაარსის მიხედვით. WordPress-ში ნაგულისხმევი პოსტის ტიპებია Post, Page, Media და ა.შ.

როგორც წესი, თქვენ წერთ ყველა თქვენს პოსტს ადმინისტრატორის კონსოლის პოსტების განყოფილებაში, შემდეგ ანიჭებთ მათ კატეგორიას. სხვადასხვა ტიპის ყველა ჩანაწერი ერთ სიაშია, რაც ართულებს მათ გარჩევას შინაარსის ტიპის მიხედვით.

პერსონალური პოსტის ტიპები საკუთარი ბმულებით ადმინისტრატორის კონსოლში მიგიყვანთ ამ ტიპის პოსტების სიაში. ამ გზით შექმნილ პოსტებს შეიძლება მიენიჭოთ კატეგორიები, როგორც ჩვეულებრივი პოსტი, ასე რომ თქვენ გაქვთ აბსოლუტური თავისუფლება, დაალაგოთ და წარმოადგინოთ პოსტები ისე, როგორც გსურთ.

ზემოთ მოცემულ მაგალითში, თუ მომხმარებელი გადადის თქვენი საიტის ფილმების მონაცემთა ბაზის განყოფილებაში, მიმოხილვის პოსტები არ იქნება ჩართული. თუ თქვენ შექმნით კატეგორიებს „მოქმედება“ და „რომანტიკა“, მაგალითად, თქვენი მომხმარებლები შეძლებენ გადავიდნენ სამოქმედო ფილმების კატეგორიაში და ნახონ ყველა მიმოხილვა და ფილმი ამ კატეგორიაში.

როდესაც თქვენ ქმნით პოსტის ახალ ტიპს, თქვენ გაქვთ მრავალი პარამეტრი, მაგალითად, სად განთავსდება ბმული ადმინისტრატორის მენიუში, შედის თუ არა ეს ტიპი ძიების შედეგებში, მხარს უჭერს თუ არა ტექსტის ფრაგმენტის ჩვენებას, დაშვებულია თუ არა კომენტარები. , და ასე შემდეგ.

თქვენ შეგიძლიათ შეცვალოთ სხვადასხვა სათაურის ტექსტები (განსაზღვრულია მასივის გამოყენებით $ ეტიკეტები), როგორიცაა გადარქმევა ახალი პოსტის დამატებადაამატეთ ახალი ფილმი. მაგალითად, შეგიძლიათ გადარქმევა ტექსტი გამორჩეული სურათიპოსტერის დამატება.

თქვენ ასევე შეგიძლიათ ჩართოთ მორგებული ველების ფუნქცია თქვენს პოსტის რედაქტორში, რომელიც დამალულია ნაგულისხმევად და უნდა იყოს ჩართული ბმულის საშუალებით ეკრანის პარამეტრებირედაქტორის ზედა ნაწილში.

მაგალითის გაგრძელება ფილმებისა და ფილმების მიმოხილვით, ფილმების პუბლიკაციებს შეუძლიათ დაამატონ მორგებული/მორგებული ველები ისეთი პარამეტრებისთვის, როგორიცაა გამოშვების წელი, რეჟისორი, რეიტინგები და მრავალი სხვა ფილმის მოკლე მიმოხილვით, როგორც პოსტის შინაარსი.

როგორც წესი, ნებისმიერი ველი, რომელსაც თქვენ ქმნით, ხელმისაწვდომია პოსტის ნებისმიერ ტიპში, ამიტომ დანამატი მოითხოვს შეზღუდვებს თითოეულ ველზე, სადაც მასზე წვდომაა შესაძლებელი.

ახალი პოსტის ტიპების შექმნა

როდესაც ქმნით მნიშვნელოვან ცვლილებებს WordPress-ში, განხორციელების ერთ-ერთი ხელმისაწვდომი ვარიანტია მოდულის შექმნა. თქვენ ასევე შეგიძლიათ შექმნათ ახალი პირადი პოსტის ტიპები ფაილში ფუნქციები.php. ამ სახელმძღვანელოსთვის ჩვენ მოდით შევქმნათ დანამატი და გავაგრძელოთ მაგალითის გამოყენება ფილმების/მიმოხილვების მონაცემთა ბაზაში.

პერსონალური პოსტის ტიპის შესაქმნელად, თქვენ უნდა დაწეროთ რამდენიმე ფუნქცია, რომლებიც გამოიძახებენ WordPress ფუნქციას register_post_type()ორი პარამეტრით. შენი ფუნქცია უნდაიყოს მიბმული სამოქმედო კაუჭზე საწყისში, წინააღმდეგ შემთხვევაში პერსონალური პოსტის ტიპი არ დარეგისტრირდება სწორად.

// მორგებული ფუნქცია უნდა იყოს მიმაგრებული init action hook add_action("init", "lc_register_movie_post_type"); // მორგებული ფუნქცია, რომელიც უწოდებს register_post_type ფუნქციას lc_register_movie_post_type() ( // დააყენეთ ტექსტის სხვადასხვა ნაწილი, $labels გამოიყენება $args მასივის შიგნით $labels = array("name" => _x("ფილმები", "პოსტის ტიპი ზოგადი" name"), "singular_name" => _x("ფილმი", "პოსტის ტიპის სინგულარული სახელი"), ...); // დააყენეთ სხვადასხვა სახის ინფორმაცია პოსტის ტიპის შესახებ $args = array("labels" => $ labels, "description" => "ჩემი მორგებული პოსტის ტიპი", "public" => true, ... // დაარეგისტრირეთ ფილმის პოსტის ტიპი $არგუმენტების მასივში register_post_type("movie", $); არგსი);

ყველა მორგებული ფუნქცია უნდა იყოს პრეფიქსი, რათა თავიდან იქნას აცილებული კონფლიქტები სხვა დანამატებთან ან თემის ფუნქციებთან. აქ გამოყენებული იქნება პრეფიქსი LC.

ფუნქციის ორი პარამეტრი register_post_type()ეს:

  1. ჩანაწერის ტიპის სახელი, მაქსიმუმ 20 სიმბოლო და არ უნდა შეიცავდეს ინტერვალს ან დიდ ასოებს
  2. ასოციაციური მასივი ე.წ $არგსი, რომელიც შეიცავს ინფორმაციას ჩანაწერის ტიპის შესახებ გასაღები-მნიშვნელობის წყვილების სახით 'გასაღები' => 'მნიშვნელობა'

მასივი $args

ყველაზე ხშირად გამოყენებული გასაღებები მასივისთვის $არგსინაჩვენებია ქვემოთ, ყველა არჩევითია:

  • ეტიკეტები- მასივი მასივი, რომელიც განსაზღვრავს ტექსტის სხვადასხვა ნაწილს, მაგალითად, „ახალი ჩანაწერის დამატება“ შეიძლება ეწოდოს „ახალი ფილმის დამატება“. ეტიკეტების მასივის გასაღებები აღწერილია ქვემოთ განმარტებებით;
  • აღწერა– ჩანაწერის ტიპის მოკლე და ლაკონური აღწერა, ის შეიძლება იყოს ნაჩვენები ტიპის შაბლონებში, მაგრამ არ გამოიყენება სხვაგან;
  • საჯარო– არის თუ არა პოსტის ტიპი ხილული ავტორისა და ვიზიტორებისთვის, ნაგულისხმევი მნიშვნელობა არის FALSE, რაც ნიშნავს, რომ ის არც ადმინისტრატორის კონსოლში ჩანს;
  • ძიების_გამორიცხვა– გამოჩნდება თუ არა ამ ტიპის ჩანაწერები რეგულარულ ძიების შედეგებში, ნაგულისხმევი მნიშვნელობა საჯაროს საპირისპიროა;
  • საჯაროდ_მოკითხვადი– შეიძლება თუ არა ამ ტიპის პოსტის მოძიება URL-ის გამოყენებით, როგორიცაა http://www.mywebsite.com/?post_type=movie, ან გაფართოებული გამოყენებით query_posts() ფუნქციის მეშვეობით. ნაგულისხმევი მნიშვნელობა არის საჯარო;
  • show_ui– დაკავშირებულია თუ არა მენიუს ბმულები და შეტყობინებების რედაქტორი ადმინისტრატორის მართვის პანელში. ნაგულისხმევი მნიშვნელობა არის საჯარო;
  • show_in_nav_menus– დაემატება თუ არა ამ ტიპის ჩანაწერები ნავიგაციის მენიუში, რომელიც შექმნილ იქნა Appearance -> Menus გვერდზე, ნაგულისხმევი მნიშვნელობა საჯაროა;
  • მენიუს ჩვენება– ნაჩვენებია თუ არა პოსტის ტიპის ბმული ადმინისტრატორის კონსოლის ნავიგაციაში. FALSE - მალავს ბმულს. TRUE – ამატებს ბმულს, როგორც ახალი უმაღლესი დონის ბმულს. ხაზის შეყვანა საშუალებას გაძლევთ განათავსოთ ბმული არსებული ზედა დონის ბმულის შიგნით, ანუ შეიყვანოთ პარამეტრები options-general.phpგანათავსებს მას პარამეტრების ბმულზე.
  • show_in_admin_bar– გამოჩნდება ამ ტიპის პოსტი ადმინისტრატორის ზოლის ზემოთ, ბმულის ქვეშ + ახალი
  • მენიუ_პოზიცია– ახალი ბმულის პოზიცია ადმინისტრატორის კონსოლის ნავიგაციის მენიუში, 5 მდებარეობს პოსტების ქვემოთ, 100 მდებარეობს პარამეტრების ქვემოთ, პოზიციების მთელი სია შეგიძლიათ იხილოთ WordPress Codex-ში
  • იერარქიული– შეიძლება თუ არა ჩანაწერის მინიჭება მშობლის ჩანაწერს, თუ მნიშვნელობა არის TRUE, მაშინ მასივი $ მხარს უჭერსუნდა შეიცავდეს "page-attributes" პარამეტრს
  • მხარს უჭერს– შერჩევით რთავს პოსტის ფუნქციებს, როგორიცაა: სურათები, ტექსტის ფრაგმენტები, მორგებული ველები და ა.შ. თუ დაყენებულია FALSE-ზე, მაშინ მასივის ნაცვლად, ამ ტიპის პოსტის რედაქტორი გამორთულია - სასარგებლოა, თუ გსურთ ამ პოსტის ყველა პოსტის დახურვა. აკრიფეთ რედაქტირებიდან, მაგრამ დატოვეთ ისინი ხილული (მაივის მნიშვნელობების სია)
  • ტაქსონომიები– ტაქსონომიების მასივი, რომელიც შეიძლება გამოყენებულ იქნას ამ ტიპის პუბლიკაციებზე, ტაქსონომიები უკვე რეგისტრირებული უნდა იყოს - ისინი აქედან არ იქმნება!
  • აქვს_არქივი– ექნება თუ არა ამ ტიპის პოსტებს საარქივო გვერდები, URL-ს აქვს პერმალინკის სტრუქტურა და URL-ის აღწერითი ნაწილი არის register_post_types() ფუნქციის 1 პარამეტრი, ანუ გამოჩნდება http://www.mywebsite.com/movie_reviews/ ფილმის_მიმოხილვის ყველა პოსტი.
  • query_var– TRUE ან FALSE განსაზღვრავს, შეიძლება თუ არა პოსტის ჩვენება პოსტის ტიპისა და პოსტის სახელის URL-ის მოთხოვნით, ანუ „http://www.mywebsite.com/?“ ფილმი=მატრიცა'. თუ შეიყვანთ ტექსტის სტრიქონს, თქვენ უნდა განათავსოთ ტექსტი სიმბოლოს შემდეგ, ასე რომ, "ფილმი" იქნება "? ფილმი=მატრიცა‘.

ეტიკეტების მასივები

პირველი გასაღები მასივში $არგსიდაურეკა ეტიკეტებიდა უნდა იყოს მასივი. იგი განსაზღვრავს ტექსტის სხვადასხვა ნაწილს, რომელიც დაკავშირებულია პოსტის ტიპთან. ვინაიდან აქ შეიძლება იყოს ბევრი მონაცემი, უმჯობესია შექმნათ მასივი, რომელსაც ეწოდება $ ეტიკეტებიმათი შენახვისთვის. ზემოთ მოცემული კოდი ოდნავ ნათელს ხდის რას ნიშნავს ეს.

ქვემოთ მოცემულია რამდენიმე მნიშვნელოვანი გასაღები ეტიკეტების მასივისთვის, ყველა არჩევითია:

  • სახელი- ზოგადი სახელები შეტყობინების ტიპისთვის, მაგალითად, ფილმები (ფილმები)
  • singular_name– ამ ტიპის ერთი ჩანაწერის სახელი, მაგალითად, ფილმი (ფილმი)
  • დამატება_ახალი- ტექსტის ჩანაცვლება „ახლის დამატება“ მითითებული ტექსტით, მაგალითად, „ფილმის დამატება“
  • დაამატეთ_ახალი_საქონელი– ჩანაცვლება „ახალი პოსტის“ დამატება, მაგალითად, „ახალი ფილმის დამატება“
  • edit_item– ჩანაცვლება „ფოსტის რედაქტირება“, მაგალითად, „ფილმის რედაქტირება“
  • გამორჩეული_სურათი– ჩანაცვლება „გამორჩეული სურათის“ პოსტის რედაქტორში, მაგალითად, „ფილმის პოსტერით“
  • set_featured_image– ჩაანაცვლეთ „გამორჩეული სურათის დაყენება“, მაგალითად, ამ ოფციით „ფილმის პოსტერის დამატება“
  • მენიუს_სახელი– შეცვალეთ ბმულის ტექსტი ზედა დონეზე, ნაგულისხმევი ბმულის ტექსტი არის გასაღების სახელი

მასივი მხარს უჭერს

// ჩართეთ კონკრეტული ფუნქციები პოსტის რედაქტორში ჩემი პოსტის ტიპისთვის $supports = array ("სათაური", "რედაქტორი", "ავტორი", "მინიატურა"); // გამორთე პოსტის რედაქტორის ყველა ფუნქცია ჩემი პოსტის ტიპისთვის $supports = FALSE;

მასივის ერთ-ერთი გასაღები $არგსიდაურეკა მხარს უჭერს. ეს არის მარტივი მასივი, სადაც ჩაწერთ პოსტის რედაქტორის ფუნქციების ჩამონათვალს, რომლებიც გსურთ ჩართოთ თქვენი პოსტის ტიპისთვის. ნაგულისხმევად, ჩართულია მხოლოდ სათაური და რედაქტორი.

თქვენ ასევე შეგიძლიათ დააყენოთ FALSE მასივის ნაცვლად, რათა გამორთოთ ყველა რედაქტორის ფუნქცია, გამორთოთ როგორც სათაური, ასევე შინაარსის დამატების არეალი. ეს ნიშნავს, რომ ჩანაწერის რედაქტირება შეუძლებელია, მაგრამ მაინც სრულად ჩანს.

აქ არის ფუნქციების სია, რომლებიც შეგიძლიათ ჩართოთ მასივში $ მხარს უჭერს:

  • სათაური (სათაური)
  • რედაქტორი
  • ავტორი – შენიშვნა: ეს საშუალებას გაძლევთ შეცვალოთ პოსტის ავტორი
  • მინიატურა (ხატი)
  • ნაწყვეტი (ტექსტის ფრაგმენტი)
  • ტრეკბეკები
  • მორგებული ველები (მორგებული ველი)
  • კომენტარები
  • ვერსიები (ვერსიები)
  • გვერდი-ატრიბუტები
  • პოსტ-ფორმატები (პოსტის ფორმატები)

პერსონალური WordPress პოსტის ტიპის შექმნა მოდულის საშუალებით

ახლა, როდესაც ჩვენ ვიცით, რა პარამეტრები სჭირდება ფუნქციას, შეგვიძლია შევქმნათ ჩვენი საკუთარი მოდული, დავწეროთ ჩვენი ფუნქცია და დავურთოთ ის ღონისძიებას საწყისში.

lc_custom_post_movie() init action hook-ზე add_action("init", "lc_custom_post_movie"); // მორგებული ფუნქცია ფილმის პოსტის ტიპის რეგისტრაციისთვის lc_custom_post_movie() ( // დააყენეთ ლეიბლები, ეს ცვლადი გამოიყენება $args მასივში $labels = array("name" => __("ფილმები"), "singular_name" " => __("ფილმი"), "add_new" => __("ახალი ფილმის დამატება"), "add_new_item" => __("ახალი ფილმის დამატება"), "edit_item" => __("ფილმის რედაქტირება") , "new_item" => __("ახალი ფილმი"), "all_items" => __("ყველა ფილმი"), "view_item" => __("ფილმის ნახვა"), "search_item" => __("ფილმების ძებნა" "), "featured_image" => "პოსტერი", "set_featured_image" => "პოსტერის დამატება"); // არგუმენტები ჩვენი პოსტის ტიპისთვის, რომელიც უნდა შევიდეს register_post_type()-ის მე-2 პარამეტრად $args = array("ეტიკეტები" => $labels, "description" => "ინახავს ჩვენი ფილმების და ფილმების სპეციფიკურ მონაცემებს", "public" => true, "menu_position" => 5, "supports" => array("სათაური", "რედაქტორი", " მინიატურა", "ამონარიდი", "კომენტარები", "მორგებული ველები"), "has_archive" => true, "show_in_admin_bar" => true, "show_in_nav_menus" => true, "has_archive" => true, "query_var" = > "ფილმი"); ) // ჰუკ lc_custom_post_movie_reviews() init action hook-ზე add_action("init", "lc_custom_post_movie_reviews"); // მორგებული ფუნქცია ფილმის მიმოხილვის პოსტის დასარეგისტრირებლად, ტიპის ფუნქცია lc_custom_post_movie_reviews() ( // დააყენეთ ლეიბლები, ეს ცვლადი გამოიყენება $args მასივში $labels = array("name" => __("ფილმის მიმოხილვები"), "singular_name" => __("ფილმის მიმოხილვა"), "add_new" => __("დაამატე ახალი ფილმის მიმოხილვა"), "add_new_item" => __("დაამატე ახალი ფილმის მიმოხილვა"), "edit_item" => __( "ფილმის მიმოხილვის რედაქტირება"), "new_item" => __("ახალი ფილმის მიმოხილვა"), "all_item" => __("ყველა ფილმის მიმოხილვა"), "view_item" => __("ფილმის მიმოხილვის ნახვა"), " search_items" => __("მოძებნე ფილმების მიმოხილვები")); // არგუმენტები ჩვენი პოსტის ტიპისთვის, რომელიც უნდა შევიდეს, როგორც register_post_type() პარამეტრი 2 $args = array("labels" => $labels, "description" = > "ინახავს ჩვენი ფილმების მიმოხილვებს", "public" => true, "menu_position" => 6, "supports" => array("სათაური", "რედაქტორი", "მინიატურა", "ნაწყვეტი", "კომენტარები", " მორგებული ველები"), "has_archive" => true, "show_in_admin_bar" => true, "show_in_nav_menus" => true, "has_archive" => true); // გამოიძახეთ WordPress-ის რეალური ფუნქცია // პარამეტრი 1 არის სახელი პოსტის ტიპი // $args მასივი მიდის პარამეტრში 2. register_post_type("review", $args); )

თუ ჩართავთ ამ დანამატს, ნახავთ ახალ ბმულს ადმინისტრატორის კონსოლის ნავიგაციის ზოლში, პოსტების ბმულის შემდეგ.

მაუსის დაჭერისას გამოჩნდება მენიუს ელემენტები „ყველას ნახვა“ და „ახლის დამატება“, ტექსტი შეესაბამება მასივში მითითებულს. $ ეტიკეტები. შეხედეთ რედაქტორს, სადაც ბმულები შეიცვალა.

მორგებული ველების შეზღუდვა მოცემული ჩანაწერებისთვის

როდესაც თქვენ ამატებთ თქვენს ველებს ჩანაწერში, ველები შეინახება და შეგიძლიათ სწრაფად დაამატოთ ნებისმიერი ახალ ჩანაწერში. თქვენ მიერ დამატებული მორგებული ველები გამოჩნდება თითოეული ჩანაწერის ჩამოსაშლელ სიაში. ამან შეიძლება გაართულოს იმ ველის პოვნა, რომელსაც ეძებთ გარკვეული ტიპის პოსტებში. თუ გსურთ შეზღუდოთ მორგებული ველები ისე, რომ ისინი ხელმისაწვდომი იყოს მხოლოდ გარკვეული ტიპის პოსტებისთვის, მაშინ უმარტივესი გზაა დანამატის მეშვეობით.

get_post_meta ()

  • იღებს 3 პარამეტრს და ბრუნდებაშედეგი
  • პირველი პარამეტრი არის პოსტის ID, შეგიძლიათ გამოიყენოთ აქ $post->IDამჟამად ნაჩვენები ჩანაწერის ID-ის მისაღებად
  • მეორე პარამეტრი – მორგებული ჩანაწერის ველის სახელი, რეგისტრის მგრძნობიარე
  • მესამე პარამეტრი არის ლოგიკური ტიპის, ე.წ $ მარტოხელადა შეიძლება იყოს TRUE (აბრუნებს შედეგს სტრიქონის სახით) ან FALSE (აბრუნებს მასივს).

შენიშვნა:თქვენ შეგიძლიათ შექმნათ მრავალი მორგებული ველი იგივე სახელით და განსხვავებული მნიშვნელობებით. თუ არსებობს რამდენიმე ველი ერთი და იგივე სახელით, FALSE-ის დაყენება დააბრუნებს მათ მასივს.

ID, "Box Art", TRUE); if (! ცარიელი ($movie_box_art)) ( ?>
" alt=" !}">

ფუნქციიდან გამომდინარე get_post_meta ()აბრუნებს მნიშვნელობას, შეგიძლიათ გამოიყენოთ მნიშვნელობა პირობით გამოხატულებაში, რათა შეცვალოთ გარეგნობა შესაბამისად.

ზემოთ მოყვანილ მაგალითში ჩვენ ვამოწმებთ, რომ ფილმი შეიცავს თუ არა მას მორგებულ ველს მინიჭებულ ყუთ ხელოვნებას. თუ $movie_box_artცარიელი არ არის, აჩვენეთ div და სურათი.

გაფართოებული მორგებული ველების ჩვენება

// საჩვენებელი ველის მნიშვნელობა the_field("FIELD NAME"); // ველის დაბრუნების მნიშვნელობა get_field("FIELD NAME");

Advanced Custom Fields მოდული გთავაზობთ საკუთარ ფუნქციებს და მოკლე კოდებს ველების ჩვენებისთვის.

ველი_("FIELD NAME");

აჩვენებს მითითებული ველის მნიშვნელობას, თქვენ უნდა გამოიყენოთ ველის სახელი, რომელიც მიუთითეთ ველის ჯგუფის შექმნისას.

get_field ('FIELD NAME');

აბრუნებს მითითებული ველის მნიშვნელობას, რომელიც სასარგებლოა პირობითი გამონათქვამებისთვის.

ეს არის ის ფუნქციები, რომლებიც, სავარაუდოდ, დაგჭირდებათ. ბევრი დამატებითი ფუნქციაა და შეგიძლიათ იპოვოთ ისინი.

მოკლე კოდები

თქვენ შეგიძლიათ აჩვენოთ ველები პირდაპირ პოსტზე ზემოთ მოცემული მოკლე კოდის გამოყენებით.

აჩვენეთ პირადი პოსტის ტიპი მთავარ გვერდზე

// მიამაგრეთ ჩვენი მორგებული ფუნქცია pre_get_posts action hook add_action("pre_get_posts", "add_reviews_to_frontpage"); // შეცვალეთ მთავარი შეკითხვის ფუნქცია add_reviews_to_frontpage($query) ( if (is_home() && $query->is_main_query()) ( $query->set ("post_type", array("post", "movie", "review ")); ) დააბრუნეთ $query;)

მორგებული პოსტის ტიპები არ ჩანს მთავარ გვერდზე ნაგულისხმევად, ამიტომ თქვენ უნდა შექმნათ ახალი ფუნქცია, რომელიც გამოიძახებს ობიექტის დაყენების მეთოდს. WP_Query WordPress.

ფუნქცია ამოწმებს არის თუ არა სტუმარი მთავარ გვერდზე და არის თუ არა აქტიური მოთხოვნა WordPress-ის მიერ გენერირებული პირველადი მოთხოვნა.

$query->set()იღებს ორ პარამეტრს:

  • პირველი პარამეტრი არის პრიორიტეტი, რომლის შეცვლაც გსურთ, ჩვენს შემთხვევაში ჩვენ ვცვლით პრიორიტეტს პოსტის_ტიპი
  • მეორე პარამეტრი არის მასივი, რომლის გადაცემაც გსურთ ატრიბუტის მნიშვნელობად პოსტის_ტიპი

ზემოთ მოცემულ კოდის მაგალითში, მასივი იწყება 'post'-ით - ამიტომაა, რომ WordPress-ის ყველა პოსტი არის ტიპის 'post' და ჩვენ მაინც გვინდა მისი ჩასმა მთავარ გვერდზე.

თუ გსურთ გამოიყენოთ მხოლოდ მოცემული ტიპის შეტყობინებები თქვენს მთავარ გვერდზე, შეგიძლიათ წაშალოთ „პოსტები“ და გამოიყენოთ საკუთარი პოსტის ტიპი.

თქვენ მიერ შეყვანილი მნიშვნელობა უნდა ემთხვეოდეს ფუნქციის 1 პარამეტრს register_post_type().

დასკვნა

ამ გაკვეთილში ჩვენ ვაჩვენებთ, თუ როგორ უნდა შექმნათ მორგებული ტიპები და რა მონაცემები გჭირდებათ ამისათვის. მორგებული პოსტის ტიპების მოქნილობა უზრუნველყოფს ღირებულ ფუნქციონირებას ნებისმიერი WordPress საიტისთვის.

უპასუხე

https://toster.ru/q/276441-ზე დაყრდნობით გასაგებია, რომ ბევრი რამ არის დამოკიდებული პროექტზე, ამიტომ ეს პოსტი უნდა მოერგოს თქვენს საქმეს.

* უსაფრთხოება:
- მარტივი ტიპის მეთოდის თითოეული არგუმენტი უნდა შემოწმდეს ტიპზე პროქსირების შემთხვევაში და სასაზღვრო მნიშვნელობებისთვის დამუშავების შემთხვევაში. თუ რამე არასწორედ მიდის, გამონაკლისი ხდება. თუ მეთოდი რამდენიმე არგუმენტით შედგება არგუმენტების 80% გადამოწმებისგან, ეს სავსებით ნორმალურია))
- არანაირი trigger_error, მხოლოდ გამონაკლისები.
- გამონაკლისები უნდა იყოს ადამიანისათვის გასაგები, ყველა სახის "რაღაც არასწორედ" შეიძლება მიეცეს მომხმარებელს, მაგრამ ჟურნალი უნდა შეიცავდეს გამონაკლისს დასტას კვალით და ადამიანისათვის გასაგებ აღწერას, თუ რა მოხდა იქ.
- მეთოდის თითოეული არგუმენტი (ობიექტი) უნდა იყოს მინიშნებული მის კლასში ან ინტერფეისზე.
- როგორც წესი, ევალს მკაცრად საყვედურობენ
- @ დასაშვებია მხოლოდ სასოწარკვეთილ სიტუაციებში, მაგალითად json_last_error შემოწმება.
- მონაცემთა ბაზასთან მუშაობამდე სავალდებულოა მონაცემების შემოწმება.
- არა == და!=. ერთად swtich - ერთადერთი გამონაკლისი, სიტუაციიდან გამომდინარე.
- თუ მეთოდი აბრუნებს არა მხოლოდ bool-ს, არამედ სხვა რამეს, საჭიროა მკაცრი შემოწმება ===, ან!==-ით.
- არ არის პირობები დავალებები შიგნით. while($row = ...) ასევე მიუღებელია.
- ჯადოსნური გეტერები/სეტერები დასაშვებია მხოლოდ სასოწარკვეთილ სიტუაციებში, წინააღმდეგ შემთხვევაში ისინი აკრძალულია.
- შეერთებები sql-ში - მხოლოდ გამოუვალ სიტუაციებში.
- პარამეტრები sql-ში - მხოლოდ ჩანაცვლების ველების მეშვეობით.
- არ არის გლობალური ცვლადები.
- თარიღები სტრიქონის სახით დაშვებულია მხოლოდ შაბლონებში და მონაცემთა ბაზაში PHP კოდით ისინი დაუყოვნებლივ გარდაიქმნება \DateTimeImmutable-ში (სასოწარკვეთილ სიტუაციებში \DateTime ნებადართულია)
- რა თქმა უნდა, ეს დამოკიდებულია პროექტზე, მაგრამ, როგორც წესი, უნდა იყოს მხოლოდ ორი შესვლის წერტილი: index.php ვებსაიტისთვის და კონსოლი (ან სხვა სახელწოდებით) კონსოლისთვის.

* Codestyle PSR-2 + PSR-5 მინიმუმ, + უფრო მკაცრი მოთხოვნების თაიგული (დაწყებისთვის, ყველაფერი, რაც PSR-ში მონიშნულია როგორც SHOULD, ხდება MUST)
- PhpStorm-ში არც ერთი ხაზი არ უნდა იყოს მონიშნული (გამონაკლისია ბეჭდვითი შეცდომები, მაგალითად, ლექსიკონმა არ იცის თქვენს პროექტში მიღებული ზოგიერთი აბრევიატურა). ამ შემთხვევაში ნებადართულია /** @noinspection *** */ გამოყენება უიმედო სიტუაციებისთვის.
- თუ ვინმე ამბობს, რომ სხვა რედაქტორში წერს და არ არის გამოკვეთილი, მაინც აგზავნის გადასახედად.

* კოდის ორგანიზაცია:
- არ არის გლობალური ფუნქციები.
- სახელების სივრცის გარეშე კლასები დასაშვებია მხოლოდ უკიდურესად სასოწარკვეთილ სიტუაციებში.

* კოდის ტესტირება (ტესტირების სიმარტივის გაგებით) მაღალი უნდა იყოს.
- კოდის გაშუქება საჭიროა ყველა შესაძლო შემთხვევისთვის, თითოეული საჯარო მეთოდის გამოყენებისთვის დამოკიდებულების დაცინვით.

* MVC პრინციპები:
- მოდელებში მომხმარებლის შეყვანის დამუშავება ფაქტიურად საერთოდ არ ხდება.
- არ არის შეკითხვები მონაცემთა ბაზაში შაბლონებიდან.
- არ არის განლაგება/js/css/sql-in კონტროლერებში.
- მოდელებში არავითარი მაგია არ არის, მხოლოდ კერძო თვისებები + გეტერები სეტერებით.
- მოდელებს უფლება აქვთ გამოიყენონ შენახვის მეთოდი (თუ შესაძლებელია, რა თქმა უნდა) მხოლოდ გამონაკლის სიტუაციებში. ყველა დანარჩენში - ან ჩადეთ ან განაახლეთ.

* მყარი პრინციპები:
- არ არსებობს უნივერსალური ობიექტები, რომლებსაც ყველაფრის გაკეთება შეუძლიათ.
- თუ შიდა გამოყენების მეთოდი კერძოა, არა საჯარო.
- სტატიკური მეთოდები დასაშვებია მხოლოდ უიმედობის შემთხვევაში.

* DRY პრინციპის დარღვევა დასაშვებია შემდეგ შემთხვევებში:
- მოვალეობების აშკარა გამიჯვნა
- ტესტებში (თითოეული ტესტი მაქსიმალურად დამოუკიდებელი უნდა იყოს)

* მონაცემთა ბაზასთან მუშაობა:
- ციკლში მოთხოვნა ნამდვილად უნდა იყოს გამართლებული.
- მკაცრი საყვედური ORDER BY RAND()-ისთვის
- ძიება არა კლავიშებით (რა თქმა უნდა, თუ ცხრილი არ არის 5 მწკრივი) აკრძალულია.
- ძიება LIMIT-ის გარეშე (ისევ, თუ ცხრილი არ არის 5 მწკრივი) აკრძალულია.
- SELECT * - აკრძალულია.
- ბაზის დენორმალიზება უნდა იყოს დასაბუთებული.
- MyISAM არ გამოიყენება (ასე)))
- ტრანზაქციაში საჭიროა მრავალი ოპერაცია, უკან დაბრუნებასთან ერთად, თუ რამე არასწორედ მოხდება.
- მონაცემთა ბაზა არ უნდა შეიცავდეს ბიზნეს ლოგიკას, მხოლოდ მონაცემებს ჰოლისტიკური ფორმით.
- არ უნდა არსებობდეს მონაცემთა ბაზის ზედმეტი ჩხუბი, სადაც ამის გარეშე შეიძლება.

* ქეში უნდა გაიწმინდოს ორი პირობით (არა ერთი მათგანი, არამედ ორი):
- დრო.
- მარცხი ბიზნეს ლოგიკის მიხედვით.
დრო დასაშვებია მხოლოდ სასოწარკვეთილ სიტუაციებში, მაგრამ შემდეგ დრო მოკლე პერიოდია.
- ქეშის გასაღებების გაანგარიშებისას გამოყენებული უნდა იყოს ცვლადი აპლიკაციის კონფიგურაციიდან (განახლების შემთხვევაში ქეში გადატვირთულია კოდით და არა ქეში სერვერის ფლეშით). ბევრი სერვერის გამოყენების შემთხვევაში, ეს არის დიპლომატიის ძალიან მოსახერხებელი და მოქნილი ინსტრუმენტი.

* ადამიანების შესახებ:
- "მიჩვეული ვარ ასე წერას და ასე გავაგრძელებ" არ არის კითხვა, თქვენ მხოლოდ მაშინ გაივლით განხილვას, როცა აზრს შეიცვლით.
- "ვიმში ვწერ და ეს ჩემთვის მოსახერხებელია" - მშვენიერია, მე მასში ვწერ კონსოლის კოდსაც)) მაგრამ არის მოთხოვნები კოდისთვის, თუ მათ ვერ გააკეთებთ, არ გაივლით განხილვას.
- "მე დავაკოპირე ეს საშინელი მეთოდი და შევცვალე 2 სტრიქონი" - ეს, რა თქმა უნდა, მშვენიერია, მაგრამ ეტიკეტის მიხედვით, თქვენ ხართ მთელი ამ მეთოდის ავტორი, ასე რომ სისულელეებს ნუ ვილაპარაკებთ, კარგი?
- "მუშაობს!" - ეს ფრაზა დაახლოებით ასე ითარგმნება: "დიახ, მესმის, რომ სრულ სისულელეს ვწერ, მაგრამ ნორმალურად ვერ ვწერ, რადგან არ შემიძლია," სწორად გავიგე?))
- "ჩემთვის ყველაფერი მუშაობს!" - მიხარია შენთვის, მაგრამ წარმოებაზე რას იტყვი?
- "იქ ყველაფერი მარტივია" - არ გამოიყენოთ სიტყვა "მარტივი", სიტყვიდან "აბსოლუტურად". აქ არის კოდის ნაწილი (პირველი, რომელსაც წააწყდებით რთული ბიზნეს ლოგიკით), სად არის შეცდომა (არ აქვს მნიშვნელობა არის თუ არა)? უკვე 2 წუთი უყურებ, რა პრობლემაა, ყველაფერი "მარტივია"))

* არაფერი:
ActiveRecord (ამას გეუბნებით, როგორც Yii-ს ყოფილი ფანი) სრული სისულელეა, მიიღეთ როგორც ორიგინალი. სინამდვილეში, თქვენ გაქვთ მონაცემთა ბაზასთან დაკავშირებული მოდელები, რომლებიც უკონტროლოდ ტრიალებენ პროექტში. არაერთხელ შემხვედრია ის ფაქტი, რომ იმავე შაბლონებში უწოდებენ შენახვას ან განახლებას (ამისთვის უნდა დაიწვათ).

საფუძვლები:
1. კრიტიკული შეცდომებისა და მოძველებული ფუნქციების არსებობა.
2. ნიმუშების გამოყენება, გადაწყვეტილებების ელეგანტურობა.
3. კოდის წაკითხვა, კომენტარების არსებობა, დოკების არსებობა.
4. პარადიგმებთან და კონვენციებთან შესაბამისობა (მაგალითად, MVC-ის დარღვევა).

მეორადი/არამნიშვნელოვანი:
1. კოდის შესრულება (გარდა მაღალი დატვირთვისა)
2. მეხსიერების მოხმარება (bigdata-ს გამოკლებით)
3. SQL მოთხოვნების ეფექტურობა (ძალიან უხერხულის გარდა)
4. მონაცემების უმნიშვნელო, მაგრამ პოტენციურად შეფერხებების თავიდან აცილება (მაგალითად, ფაილური სისტემის შენელება, როდესაც ატვირთვის საქაღალდეში არის სურათების დიდი რაოდენობა)
5. გამოყენებული ტექნოლოგიების სიახლე.
6. გამართლებული\გაუმართლებელი\გადაჭარბებული ველოსიპედი.

  1. კოდი არ შეიცავს აშკარა ან პოტენციურ შეცდომებს.
  2. კოდი მუშაობს ისე, როგორც აღწერილია დოკუმენტაციაში, ტექნიკურ მახასიათებლებში ან თანდართულ კომენტარებში.
  3. კოდირების სტილი მიჰყვება კოდირების მიღებულ წესებს
  4. კოდს აქვს თანმხლები კომენტარები phpDoc-ის მიხედვით
  5. ბლოკების ბუდე არ აღემატება მე-4 დონეს.
  6. კოდი არ ქმნის შეტყობინებებს მკაცრი, გაფრთხილების, შენიშვნის ან მოძველებული დონის დონეზე. თუ ამის თავიდან აცილება შეუძლებელია, მაშინ უშუალოდ ხაზამდე, რომელიც ქმნის ამას, თქვენ უნდა აიძულოთ error_reporting გამორთოთ, ხოლო ხაზის შემდეგ დაუყოვნებლივ, error_reporting უნდა ჩართოთ თავდაპირველ მნიშვნელობაზე (რაც ადრე იყო). ასეთი კოდი უნდა იყოს დოკუმენტირებული სპეციალური გზით.
  7. კოდის კომენტირებული ნაწილი უნდა წაიშალოს.
  8. HTML და JavaScript ჩანართები აკრძალულია PHP კოდში (გარდა phpTemplate). ყველა ჩასმა უნდა გაკეთდეს სპეციალური შაბლონების გამოყენებით.
  9. კლასები, ფუნქციები, ცვლადები და მუდმივები უნდა იყოს დასახელებული ლოგიკურად ადამიანის მიერ წასაკითხად ინგლისურ ენაზე კოდირების სტანდარტების შესაბამისად. რუსულ ან სხვა ენებზე ტრანსლიტერაციით დასახელება დაუშვებელია
  10. ცვლადების ფარგლები და კლასების მეთოდები ყოველთვის უნდა იყოს განსაზღვრული (პირადი, დაცული, საჯარო).
  11. ერთი მეთოდის ზომა არ უნდა აღემატებოდეს 40-50 ხაზს.
  12. ცვლადი, რომელიც გამოიყენება ციკლში ან პირობით ბლოკში, წინასწარ უნდა იყოს ინიცირებული.
  13. ცვლადი უნდა შეიცავდეს მხოლოდ ერთ ტიპს ნებისმიერ დროს. ცარიელი ცვლადი უნდა შეიცავდეს null-ს. ($var = false; $var = "ტესტი"; დაუშვებელია. $var = null დაშვებულია; $var = "ტესტი";).
  14. კლასის ობიექტების მეთოდებზე გადაცემისას გამოყენებული უნდა იყოს ტიპის შემოწმება.

ერთ მშვენიერ დღეს გადაწყვიტეთ შეგექმნათ საკუთარი ვებსაიტი ან ბლოგი და მართვის სისტემისთვის აირჩიეთ WordPress... რაც დრო გადიოდა, თქვენი საიტი უფრო და უფრო იკითხება და შემდეგ მიხვდით, რომ კიდევ უფრო დიდი პოპულარობისთვის საჭიროა ცოტა ფუნქციონალობის დამატება საიტზე ან უბრალოდ ავტომატიზირებული ზოგიერთი ქმედება.

მიდიხარ WordPress დანამატების „საწყობში“ და აღმოაჩენ, რომ საჭირო დანამატი იქ არ არის. რა უნდა გააკეთოს? რა უნდა გავაკეთო? თუ ცოტათი მაინც იცნობთ PHP-ში პროგრამირების საფუძვლებს, განლაგებას, მაშინ ეს არ გაგიჭირდებათ თავად დაწერეთ მოდული WordPress-ისთვის.

ახლა მოდით წავიდეთ "სამზარეულოში" ჩვენი მოდულის მოსამზადებლად.

პ.ს. თუ არ გაქვთ ცოდნა php-ში და განლაგებაში... არ ინერვიულოთ, სთხოვეთ ვინმეს დაგიწეროთ საჭირო ფუნქციონირება :)

სანამ მოდულის წერას დაიწყებთ, უნდა მიმართოთ WordPress-ის დოკუმენტაციას, რომელიც აღწერს დანამატების დაწერის ძირითად პრინციპებს და რამდენიმე კოდის მაგალითს.

მე არ გავამეორებ ამ ინფორმაციას, მაგრამ დაუყოვნებლივ გადავალ პირდაპირ კოდის დაწერაზე.

მოდით დავწეროთ მარტივი დანამატი, რომელიც საშუალებას მოგცემთ შეინახოთ და აჩვენოთ მიმოხილვები თქვენი საიტის შესახებ. რა თქმა უნდა, ასეთი დანამატები უკვე არსებობს, მაგრამ ეს კარგად იქნება, როგორც მაგალითი.

პირველი, რასაც ჩვენ გავაკეთებთ, არის ჩვენი მოდულის უნიკალური სახელი - ” AdvUserReviews«.

შემდეგი, ჩვენ შევქმნით ახალ დირექტორიას "advuserreviews" თქვენი საიტის დირექტორიაში "/wp-content/plugins/". და მასში შევქმნით ფაილს "advuserreviews.php". ეს იქნება მთავარი ფაილი, რომელიც პასუხისმგებელია ზოგად ინიციალიზაციაზე. (მიზანშეწონილია გამოიყენოთ UTF-8 კოდირება ფაილებისთვის).

ფაილის დასაწყისშივე უნდა მიუთითოთ ძირითადი ინფორმაცია მოდულის შესახებ

ახლა, თუ გადახვალთ მართვის პანელზე, ხედავთ, რომ სისტემამ იპოვა ახალი დანამატი და გთავაზობთ მის გააქტიურებას. მაგრამ ჯერ ნაადრევია ამის გაკეთება.

ჩვენ დავწერთ ჩვენს ახალ დანამატს OOP სტილში და ყველა მონაცემთა დამუშავება განთავსდება ერთ ფაილში. მოდით შევქმნათ ფაილის მთავარი ჩონჩხი.

// პირდაპირი ზარის შეწყვეტა if(preg_match("#" . basename(__FILE__) . "#", $_SERVER["PHP_SELF"])) ( die ("თქვენ არ გაქვთ უფლება ამ გვერდზე პირდაპირ დარეკოთ."); ) თუ (!class_exists("AdvUserReviews")) ( class AdvUserReviews ( // შიდა მონაცემების შენახვა საჯარო $data = array(); // ობიექტის კონსტრუქტორი // ძირითადი ცვლადების ფუნქციის ინიცირება AdvUserReviews() ( ) ) ) გლობალური $rprice; $rprice = new AdvUserReviews();

ახლა მოდით დავამატოთ შემდეგი კოდი ობიექტის კონსტრუქტორს:

ფუნქცია AdvUserReviews() ( გლობალური $wpdb; // გამოაცხადეთ ჩვენი მოდულის ინიციალიზაციის მუდმივი DEFINE ("AdvUserReviews", true); // ჩვენი მოდულის ფაილის სახელი $this->plugin_name = plugin_basename(__FILE__); // URL მისამართი ჩვენი დანამატი $ this->plugin_url = trailingslashit(WP_PLUGIN_URL."/".dirname(plugin_basename(__FILE__)) // ცხრილი ჩვენი მიმოხილვების შესანახად // $wpdb ცვლადი უნდა გამოცხადდეს გლობალურად $this->tbl_adv_reviews = $); wpdb->prefix "adv_reviews" // ფუნქცია, რომელიც სრულდება, როდესაც მოდული გააქტიურებულია register_activation_hook($this->plugin_name, array(&$this, "activate")); დეაქტივირებული register_deactivation_hook($this->plugin_name, array) (&$this, "deactivate") // ფუნქცია, რომელიც შესრულებულია მოდულის დეინსტალაციისას register_uninstall_hook($this->plugin_name, array(&$this, "Deactivate")); );

ობიექტის კონსტრუქტორში ვიყენებთ 3 „კაკვს“ ან „კაუქს“ (რა არის ისინი?): რეგისტრაცია_გააქტიურება_კაკი, რეგისტრაცია_გამორთვა_კაკიდა register_uninstall_hook- ეს ის ფუნქციებია, რომლებიც შესრულებულია მოდულის გააქტიურების, დეაქტივაციისა და წაშლისას, შესაბამისად.

ახლა მოდით პირდაპირ განვახორციელოთ ეს ფუნქციები.

/** * გაააქტიურეთ დანამატი */ ფუნქცია activate() ( გლობალური $wpdb; require_once(ABSPATH . "wp-admin/upgrade-functions.php"); $table = $this->tbl_adv_reviews; // განსაზღვრეთ mysql ვერსია if ( version_compare(mysql_get_server_info(), "4.1.0", ">=")) (if (! ცარიელი ($wpdb->charset)) $charset_collate = "ნაგულისხმევი სიმბოლოების ნაკრები $wpdb->charset"; if (! ცარიელი ( $wpdb->collate)) $charset_collate .= "COLLATE $wpdb->collate" ) // ჩვენი ცხრილის სტრუქტურა მიმოხილვებისთვის $sql_table_adv_reviews = " შექმენით TABLE `".$wpdb->პრეფიქსი."adv_reviews` (; `Id` int (10) ხელმოწერილი null auto_increment,` review_title` varchar (255) არ არის null ნაგულისხმევი "0", `მიმოხილვა_text` ტექსტი nul `review_user_email` VARCHAR(200) NULL, PRIMARY KEY (`ID`))".$charset_collate.";"; // შეამოწმეთ ცხრილის არსებობა, თუ ($wpdb->get_var("აჩვენეთ ცხრილები, როგორიცაა "".$table. """ ) != $table) ( dbDelta($sql_table_adv_reviews); ) ) /** * მოდულის დეაქტივაცია */ ფუნქცია deactivate() ( დაბრუნება true; ) /** * მოდულის წაშლა */ ფუნქცია uninstall() ( გლობალური $wpdb; $wpdb->query ("Drop TABLE IF EXISTS ($wpdb->prefix)adv_reviews"); )

ცვლადი $wpdbპასუხისმგებელია მონაცემთა ბაზაში შეკითხვებზე. ფუნქცია dbDeltaაანალიზებს ცხრილის მიმდინარე სტრუქტურას, ადარებს მას სასურველ ცხრილის სტრუქტურას და საჭიროების შემთხვევაში ამატებს ან ცვლის ცხრილს.

შესაბამისად, როდესაც მოდული გააქტიურებულია, იქმნება ცხრილის სტრუქტურა მიმოხილვების შესანახად. როდესაც დანამატი გამორთულია, არანაირი მოქმედება არ ხდება, მაგრამ როდესაც ის წაიშლება, ჩვენ ვშლით ჩვენს ცხრილს. მოქმედებების უფრო დეტალურად გაგება შესაძლებელია საწყისი კოდიდან.

ახალი მოდულის ძირითადი სტრუქტურა მზად არის. ახლა ჩვენ უნდა დავიწყოთ ფუნქციური ნაწილის წერა. ამისათვის ჩვენ უნდა დავამატოთ შემდეგი კოდის ხაზები კლასის კონსტრუქტორს:

// თუ ჩვენ ვართ ადმინი. ინტერფეისი if (is_admin()) (// სტილის და სკრიპტების დამატება add_action("wp_print_scripts", array(&$this, "admin_load_scripts")); add_action("wp_print_styles", array(&$this, "admin_load_styles")); // დაამატეთ მენიუ დანამატისთვის add_action("admin_menu", array(&$this, "admin_generate_menu") else (// სტილისა და სკრიპტების დამატება add_action("wp_print_scripts", array(&$this, "site_load_scripts") ) add_action("wp_print_styles", array(&$this, "site_load_styles") add_shortcode("show_reviews", array (&$this, "site_show_reviews"));

მოდით შევხედოთ კოდის ამ განყოფილებას უფრო დეტალურად. დავიწყოთ ადმინისტრაციული პანელით.
ფუნქცია " არის_ადმინ» ამოწმებს რა რეჟიმში ვმუშაობთ ამჟამად - ვებსაიტზე თუ მართვის პანელში.
შემდეგი, რამდენიმე კაუჭი გამოიყენება ფუნქციებისთვის:

  • wp_print_scripts- დაამატეთ საჭირო Javascript ფაილები
  • wp_print_styles- დაამატეთ საჭირო სტილები
  • admin_menu- საკონტროლო პანელზე ახალი მენიუს დამატება

თითოეული ჰუკ შეესაბამება ჩვენს კლასში განხორციელებულ მეთოდს. რომელშიც კეთდება საჭირო ოპერაციები.
მოდით შევხედოთ სტილისა და სკრიპტების დამაკავშირებელ კოდს

/** * მართვის გვერდისთვის საჭირო სკრიპტების ჩატვირთვა * ადმინისტრაციის პანელში */ ფუნქცია admin_load_scripts() ( // სკრიპტების რეგისტრაცია wp_register_script("advReviewsAdminJs", $this->plugin_url . "js/admin-scripts.js") ; საჭირო სტილები საკონტროლო გვერდისთვის * ადმინისტრაციის პანელში */ ფუნქცია admin_load_styles() ( // სტილისტების რეგისტრაცია wp_register_style("advReviewsAdminCss", $this->plugin_url . "css/admin-style.css"); // სტილის დამატება wp_enqueue_style("advReviewsAdminCss");

აქ გამოიყენება შემდეგი ფუნქციები.

თითოეული მოქმედება დამოკიდებულია გავლილ პარამეტრზე „მოქმედება“, შესაბამისად „რედაქტირება“ - მიმოხილვის რედაქტირება, „გაგზავნა“ - რედაქტირებული მიმოხილვის შენახვა და „წაშლა“ - მიმოხილვის წაშლა.

მონაცემთა გაცვლა ჩვენების გვერდებთან ხდება „მონაცემების“ ობიექტის თვისების მეშვეობით. ამ გვერდების წყაროს კოდი განთავსდება არქივში ამ მოდულით სტატიის ბოლოს. მათ აქ არ ჩავსვამ, რადგან თემა უკვე საკმაოდ დიდია.

აქ ჩვენ ვამთავრებთ ადმინისტრაციულ პანელს და გადავდივართ მომხმარებლების მიმოხილვების ჩვენებაზე და დამატებაზე.

იმისთვის, რომ WordPress-ს ვუთხრათ, როდის გამოიძახოს ჩვენი მოდული, ჩვენ უნდა დავარეგისტრიროთ „შორტიკოდი“, რაც გაკეთდა ჩვენი კლასის კონსტრუქტორში. წაიკითხეთ მეტი ამის შესახებ.

Add_shortcode("show_reviews", array (&$this, "site_show_reviews"));

ახლა თქვენ შეგიძლიათ განათავსოთ შემდეგი კოდი საიტის ნებისმიერ გვერდზე და ის აიძულებს ჩვენს მიერ მითითებულ ფუნქციას (მეორე პარამეტრად გადასული) შესრულდეს. ქვემოთ მოცემულია ამ ფუნქციის საწყისი კოდი.

/** * მიმოხილვების სია საიტზე */ საჯარო ფუნქციის site_show_reviews($atts, $content=null) ( გლობალური $wpdb; if (isset($_POST["action"]) && $_POST["action"] = = " add-review") ( $this->add_user_review(); ) // აირჩიეთ ყველა მიმოხილვა მონაცემთა ბაზიდან $this->data["reviews"] = $wpdb->get_results("SELECT * FROM `" . $ this- >tbl_adv_reviews ; ) პირადი ფუნქცია add_user_review() ( გლობალური $wpdb; $inputData = მასივი ("review_title" => strip_tags($_POST["review_title"]), "review_text" => strip_tags($_POST["review_text"]), "review_user_name " => strip_tags ($_POST["review_user_name"]), "review_user_email" => strip_tags($_POST["review_user_email"]); // დაამატეთ ახალი მიმოხილვა საიტზე $wpdb->insert($this- > tbl_adv_reviews, $inputData);

პრინციპში, აქ არაფერია რთული - მონაცემების შესარჩევად კეთდება SQL მოთხოვნა, მაგრამ თუ "მოქმედების" პარამეტრი გავიდა, მაშინ ჯერ ახალი მიმოხილვა ემატება. მაგრამ ღირს ყურადღება მიაქციოთ გამომავალი ბუფერირებას. ჩასმული გვერდის მონაცემების მისაღებად აუცილებელია.

სულ ესაა. ახლა ჩვენ ვხედავთ რა მივიღეთ. ა ჩამოტვირთეთ მოდული და წყარო კოდებიშეგიძლიათ აქ.

რა თქმა უნდა, ეს მხოლოდ მოდულის შექმნის მაგალითია, მაგრამ ის ასევე იმუშავებს როგორც უბრალო სტუმრის აპლიკაცია, თუ მას ოდნავ შეცვლით, მაგალითად, დაამატებთ დაცვას ბოტებისგან და გვერდი-გვერდ გამომავალს. ბედნიერი კოდირება :)

ფორმა საიტზე:

დანამატის მართვის პანელი:

მიმოხილვის რედაქტირება:

თქვენ ასევე შეიძლება დაგაინტერესოთ: