PHP код в WordPress – най-добри практики. Полезни вмъквания (фрагменти) на код за WordPress Примери за писане на код в wp

Смея да предположа, че в живота ви е имало случаи, когато сте искали да добавите (коригирате) нещо в темата на вашия WP сайт или във функционалността на някой плъгин. Освен това разработчиците не са включили тази възможност в стандартни средствауправление. И душата ви не признава никакви ограничения и изисква полет на фантазия 🙂 Както разбирате, има изход от всяка ситуация, в този случай ще трябва да коригираме кода на приставката, темата...

Основната трудност при редактирането на кода е, че промените, които правите, за съжаление, не траят дълго и е вероятно да бъдат отменени със следващата актуализация. Ако виждате решението в това да стоите далеч от актуализациите, смея да ви разубедя от това опасно неблагородно решение, тъй като актуализациите съдържат важни променипо отношение на сигурността и корекции на грешки и често има нови функции.

В резултат на това е за предпочитане да използвате методи, които ще издържат в нашия динамично променящ се свят и в същото време ще спестят вашето ценно време.

Предупреждения!

В интернет често можете да намерите съвети, които предлагат да направите промени във файла. functions.php- ако има някаква възможност да се направи без него - по-добре е да не пипате този файл. В методите по-долу ще видите как да приложите това. И във всеки случай трябва да създадете дъщерна тема и да оставите родителската тема непокътната.

Когато префиксирате функция, винаги използвайте персонализиран код във формата: _префикс(към името на променената функция). Това действие ще ви спести от конфликти с други функции на темата или плъгина.

И така, как да добавите код към WP сайт?

1) Персонализиран плъгин

Така че можете да вмъкнете кодови фрагменти и те няма да бъдат изтрити по време на актуализацията, а също така можете да ги редактирате, да ги активирате в бъдеще или обратното - да ги деактивирате, ако е необходимо.

За да направите това е лесно: първо трябва да създадете директория за вашия плъгин и да го наименувате по подходящ начин, например moy-plugin (използвайте само тире, а не наклонена черта в края)

След това създаваме основния файл на приставката. Както разбирате, той трябва да включва името, описанието и основната информация, както и кода, който ще помогне за защитата на приставката от натрапници. И наричаме този файл, да кажем my-plugin.php. Разширението .php ще покаже WP на кой език е създадено даден файл.

Можете да създадете файл по описания по-горе начин във всеки текстов редактор, например в NotePad, който вече е внимателно инсталиран в операционната Windows система(TextEdit на Mac). редакторът Майкрософт Уърдпо-добре е да не го използвате, защото форматира текста, а в тази ситуация изобщо не ни трябва.

Ето кода за добавяне:

И под този код направете вашите промени, които вашата творческа душа изисква. Не е необходимо да добавяте затварящи PHP тагове в края. В този случай заглавието, описанието и URL ще се показват във вашия административен панел. И, разбира се, можете да замените информацията "ClubWP" с ваша собствена информация.

След това остава само да опаковате създаденото в zip архив и да го изпратите на ftp на вашия сайт. В бъдеще по този начин ще можете да правите всякакви промени във вашия плъгин.

По лесен начин ще създадете прост плъгин за вашите нужди.

2) Приставка за кодови фрагменти

Ако описаният по-горе метод е труден за вас или сте много практичен човек и сте свикнали да получавате резултати по-бързо, Code Snippets е създаден специално за вас. Подобно на функцията, описана по-горе, плъгинът добавя вашия код с възможност за допълнително редактиране, без да използвате вашата тема.

След като инсталирате плъгина, в админ панела ще се появи нов прозорец “Snippets”, в който съответно можете да добавяте нови фрагменти. За което можете да въведете кода и информация за предназначението му.

По този начин можете: да активирате или деактивирате персонализиран код под формата на добавки. Много удобно и практично, т.к. понякога са възможни конфликти с теми и добавки и можете лесно да разберете това и да деактивирате генерирания код.

3) Редактиране на Functions.php на дъщерната тема

Ако използването на плъгини не ви подхожда и трябва да направите промяна директно в темата на вашия сайт, тогава този метод е за вас. Напомням ви, че можете да направите това само с дъщерни теми.

За да използвам този метод, предлагам моя шаблон functions.phpдетска тема. Разархивирайте и редактирайте файла style.css(име на шаблон и импортиране на URL)

P.S.Опитайте всичко възможно, за да улесните живота си в бъдеще, по отношение на трудната част от коригирането на грешки и редактирането на персонализиран код, когато възникне необходимост.

Един ден решихте да създадете свой собствен уебсайт или блог и избрахте WordPress за система за управление ... С течение на времето вашият сайт става все по-четим и тогава осъзнахте, че за още по-голяма популярност трябва да добавите някои функционалности към сайта или просто автоматизирайте някои от тези действия.

Отивате в "склада" на плъгини за wordpress и установявате, че нужният ви плъгин го няма. Какво да правя? Как да бъдем? Ако сте поне малко запознати с основите на програмирането в php, оформление, тогава няма да ви е трудно Напишете свой собствен плъгин за WordPress.

А сега да отидем в "кухнята", за да подготвим нашия плъгин.

P.s. Ако нямате познания по 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 ( // Съхраняване на вътрешни данни public $data = array(); // Конструктор на обект // Инициализиране на основните променливи функция AdvUserReviews() ( ) ) ) global $rprice; $rpice = нови 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, "uninstall")); )

В конструктора на обекти използваме 3 „кукички“ или „кукички“ (какво е това?): регистър_активиране_кука, регистър_деактивиране_кукаИ register_uninstall_hook- това са функциите, които се изпълняват при активиране, деактивиране и съответно премахване на плъгина.

Сега нека внедрим тези функции директно.

/** * Активиране на плъгин */ функция activate() ( global $wpdb; require_once(ABSPATH . "wp-admin/upgrade-functions.php"); $table = $this->tbl_adv_reviews; // Определете версията на mysql, ако ( 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 = " СЪЗДАВАНЕ НА ТАБЛИЦА `".$wpdb->prefix."adv_reviews` (`ID` INT(10) UNSIGNED NULL AUTO_INCREMENT, `review_title` VARCHAR(255) NOT NULL DEFAULT "0", `review_text` TEXT NOT NULL, `review_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `review_user_name` VARCHAR(200) NULL, `review_user_email` VARCHAR(200) NULL, PRIMARY KEY (`ID`))".$charset_collate.";"; // Проверете дали таблицата съществува, ако ($wpdb->get_var("покажи таблици като "".$table."" " ) != $table) ( dbDelta($sql_table_adv_reviews); ) ) /** * Deact извикване на плъгин */ функция deactivate() ( return true; ) /** * Премахване на плъгина */ function uninstall() ( global $wpdb; $wpdb->query("DROP TABLE IF EXISTS ($wpdb->prefix)adv_reviews"); )

Променлива $wpdbотговаря за заявките към базата данни. функция dbDeltaанализира текущата структура на таблицата, сравнява я с желаната структура на таблицата и или добавя, или модифицира таблицата според нуждите.

Съответно, когато плъгинът е активиран, се създава структура на таблица за съхранение на ревюта. Когато плъгинът е деактивиран, не се извършва никакво действие, но когато го изтрием, изтриваме нашата таблица. По-подробни действия могат да бъдат разбрани от изходния код.

Основната структура на новия плъгин е готова. Сега трябва да започнем да пишем функционалната част. За да направим това, трябва да добавим следните редове код към конструктора на класа:

// Ако сме в admin. интерфейс 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")); )

Нека разгледаме по-отблизо този раздел от кода. Да започнем с административния панел.
функция " is_admin» проверява в какъв режим работим в момента - на сайта или в контролния панел.
След това се използват няколко куки за функции:

  • wp_print_scripts- Добавете необходимите javascript файлове
  • wp_print_styles- Добавете необходимите стилове
  • admin_menu- Добавете ново меню в контролния панел

Всяка кука съответства на внедрен метод в нашия клас. в който се извършват необходимите операции.
Обмислете кода за свързване на стилове и скриптове

/** * Заредете необходимите скриптове за страницата за администриране * в админ панела */ функция admin_load_scripts() ( // Регистрирайте скриптове wp_register_script("advReviewsAdminJs", $this->plugin_url . "js/admin-scripts.js") ; wp_register_script( "jquery", $this->plugin_url . "js/jquery-1.4.2.min.js"); // Добавяне на скриптове към страницата wp_enqueue_script("advReviewsAdminJs"); wp_enqueue_script("jquery"); ) /** * Зареждане на необходимите стилове за страницата на администратора * в панела на администратора */ функция admin_load_styles() ( // Регистриране на стилове wp_register_style("advReviewsAdminCss", $this->plugin_url . "css/admin-style.css") ; // Добавяне на стилове wp_enqueue_style( "advReviewsAdminCss"); )

Тук се използват следните функции.

Всяко действие зависи от преминалия параметър "action", съответно "edit" - редактиране на рецензията, "submit" - запазване на редактираната рецензия и "delete" - изтриване на рецензията.

Данните се обменят със страниците на дисплея чрез свойството "данни" на обекта. Изходният код на тези страници ще бъде публикуван в архива с този модул в края на статията. Тук няма да ги вмъквам, тъй като темата вече се оказа доста голяма.

Това завършва административния панел и преминава към показване и добавяне на обратна връзка от потребителите.

За да кажем на 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. "`", ARRAY_A); ## Включете буферирането на изхода ob_start (); include_once("site_reviews.php"); ## Вземете данни $output = ob_get_contents (); ## Изключете буферирането ob_end_clean (); return $output ; ) частна функция add_user_review() (глобален $wpdb; $inputData = array("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 заявка за избор на данни, но ако параметърът „действие“ бъде предаден, първо се добавя нов преглед. Но трябва да обърнете внимание на изходното буфериране. Това е необходимо, за да получите данните от въведената страница.

Това всъщност е всичко. Сега можете да видите какво имаме. А изтегляне на плъгин и изходни кодовеможете тук.

Разбира се, това е само пример за създаване на плъгин, но той ще работи и като обикновена стая за гости, ако бъде леко модифициран, например добавяне на защита от ботове и пагинация. Приятно кодиране :)

Форма на уебсайта:

Панел за управление на добавки:

Преглед на редакцията:

Може също да се интересувате от:


Четимостта на кода е много болна тема и трябва да й се обърне необходимото внимание. В тази статия ще научите за 16 трика, които ще ви помогнат да напреднете в тази тема.

1. Коментари и документация

IDE стават все по-популярни в света на разработчиците като те предоставят удобни инструменти за коментиране и документиране на код.

Ето един пример:

Ето още един пример за извикване на ваш собствен метод:

В този пример стилът на коментиране е базиран на PHPDoc, а IDE, която използвам, е Aptana.

2. Вдлъбнатина

Предполагам, че вече знаете значението на отстъпа във вашия код. Като цяло има няколко стила на форматиране на кода.

Функция foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Функция foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Функция foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Лично аз най-често използвам стил номер 2, но понякога отивам на номер 1. Но всичко е въпрос на вкус, разбира се. Най-вероятно няма „най-добър“ стил, който да подхожда на абсолютно всички. Тези правила, на първо място, трябва да се спазват от тези, които работят в екип или участват в писането на проекти с отворен код.

Има и стилове, които съчетават някои характеристики. Например стандартите за кодиране на PEAR, където фигурната скоба "(" остава на същия ред в условни изрази, но е обвита във функции.

PEAR стил:

Функция foo() ( // на нов ред if ($maybe) ( // на същия ред do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Също така имайте предвид, че този стил използва 4 интервала вместо раздели.

Можете да научите повече за различните стилове.

3. Избягвайте ненужните коментари

Да, коментирането на кода е добро; обаче не е необходимо да се прекалява. Ето един пример:

// получаване на код на държава $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); // ако държавата е САЩ if ($country_code == "US") ( // показване на формата echo form_input_state(); )

Ако работата на кода е очевидна, тогава най-вероятно не трябва да пишете ненужни коментари.

Ако все още не са налични, можете да ги съкратите малко:

// показване на формуляра, ако държавата е САЩ $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); if ($country_code == "US") ( echo form_input_state(); )

4. Групиране на кодове

Най-често някои задачи изискват писане на няколко реда код. Ето защо е най-добре да комбинирате такива задачи в отделни блокове, разделени с интервали.

Ето един прост пример:

// получаване на списък с форуми $forums = array(); $r = mysql_query("ИЗБЕРЕТЕ идентификатор, име, описание ОТ форуми"); while ($d = mysql_fetch_assoc($r)) ( $forums = $d; ) // зареждане на шаблон load_template("header"); load_template("forum_list",$forums); load_template("долен колонтитул");

Ако добавите коментар преди началото на всеки блок, това допълнително ще подобри четливостта на вашия код.

5. Схема за именуване

Понякога дори в езика PHP можете да намерите несъответствия в именуването на функциите. И ето много примери:

  • strpos() срещу str_split()
  • imagetypes() срещу image_type_to_extension()

Има няколко популярни стила:

  • camelCase: Първата буква на всяка нова дума е главна.
  • долна черта: долна черта между думите: mysql_real_escape_string().

Ако смесите тези техники, тогава рано или късно можете да попаднете в неудобна ситуация. Ако работите върху проект, който използва една от тези техники, тогава трябва да следвате примера. Все още може да зависи от езика за програмиране. Например, повечето Java разработчици използват camelCase, докато PHP разработчиците предпочитат долни черти.

Но дори и тук не беше без хибрид. Някои разработчици използват долни черти при именуване на класове и методи (извън класове), а в други случаи използват camelCase:

Клас Foo_Bar ( публична функция someDummyMethod() ( ) ) функция procedural_function_name() ( )

Още веднъж ще кажа, че няма по-добър стил. Просто трябва да се придържате към нещо.

6. СУХИЯ принцип

СУХО (не се повтаряй) Известен също като DIE: Дублирането е зло.

Основната задача на всяка система, било то уеб приложение или нещо друго, е да автоматизира повтарящи се задачи. Този принцип трябва да се спазва винаги и навсякъде, особено ако сте разработчик. Една и съща част от кода не трябва да се повтаря отново и отново.

Например повечето уеб приложения се състоят от една или повече страници. Ясно е, че тези страници ще съдържат едни и същи елементи. Горен, долен колонтитул – най-ярките примери. Ще се изненадате колко много хора все още дублират тези елементи на всяка страница.

$this->load->view("включва/заглавка"); $this->load->view($main_content); $this->load->view("включва/долен колонтитул");

7. Избягвайте дълбокото гнездене

Четимостта на кода е драстично намалена, ако имате дълбоко влагане.

Функция do_stuff() ( // ... if (is_writable($folder)) ( if ($fp = fopen($file_path,"w")) ( if ($stuff = get_some_stuff()) ( if (fwrite($) fp,$stuff)) ( // ... ) else ( return false; ) ) else ( return false; ) ) else ( return false; ) ) else ( return false; ) )

За да коригирате ситуацията, трябва да преразгледате как работи кодът ви и да го оптимизирате:

Функция do_stuff() ( // ... if (!is_writable($folder)) ( return false; ) if (!$fp = fopen($file_path,"w")) ( return false; ) if (!$stuff = get_some_stuff()) ( return false; ) if (fwrite($fp,$stuff)) ( // ... ) else ( return false; ) )

8. Ограничение на дължината на линията

Всеки знае, че процесът на четене става много по-приятен, когато текстът е разделен на колони. Това е основната причина нашите вестници да изглеждат така:

Подобна техника може да се приложи към нашия код:

// лош $my_email->set_from(" [имейл защитен]")->добави_към(" [имейл защитен]")->set_subject("Верижни методи")->set_body("Някое дълго съобщение")->send(); // добре $my_email ->set_from(" [имейл защитен]") -> add_to(" [имейл защитен]") ->set_subject("Верижни методи") ->set_body("Някое дълго съобщение") ->send(); // лошо $query = "ИЗБЕРЕТЕ id, потребителско име, first_name, last_name, статус ОТ потребители LEFT JOIN user_posts ИЗПОЛЗВАНЕ (users.id, user_posts.user_id) WHERE post_id = "123""; // лоша $query = "ИЗБЕРЕТЕ id, потребителско име, first_name, last_name, статус ОТ потребители LEFT JOIN user_posts USING(users.id, user_posts.user_id) WHERE post_id = "123"";

Повечето разработчици се придържат към ограничението от 80 и 120 знака.

9. Организиране на файлове и папки

Технически можете да поставите целия си код на приложението в един файл :) Но какво ще направите, когато трябва да промените или добавите нещо.

Спомням си първите си проекти, в които прикачвах файлове. Организацията ми обаче много куцаше. Създадох папка "inc", в която поставих няколко файла: db.php и functions.php. В процеса на писане на приложението тази папка беше раздута и раздута и накрая беше трудно да се разбере кое къде е.

За да разрешите този проблем, е по-добре да използвате различни видове рамки или поне да се придържате към тяхната структура. Ето как изглежда проектът в CodeIgniter:

10. Имена на променливи

Като цяло имената на променливите трябва да имат пълен смисъл - това е в идеалния случай. Може да се направи изключение за временни променливи.

Нека да разгледаме няколко примера:

// $i for for цикли ($i = 0; $i< 100; $i++) { // $j для вложенных циклов for ($j = 0; $j < 100; $j++) { } } // $ret для возвращаемых переменных function foo() { $ret["bar"] = get_bar(); $ret["stuff"] = get_stuff(); return $ret; } // $k и $v для foreach foreach ($some_array as $k =>$v) ( ) // $q, $r и $d за mysql $q = "SELECT * FROM таблица"; $r = mysql_query($q); while ($d = mysql_fetch_assocr($r)) ( ) // $fp за работа с файлове $fp = fopen("file.txt","w");

11 - Напишете ключови думи в SQL с главни букви

Повечето уеб приложения взаимодействат с бази данни. Ако сами пишете SQL заявки, те също трябва да бъдат форматирани по съответния начин ... Тук няма нищо сложно. Просто пишете ключовите думи с главни букви.

12. Отделен код и данни

Това е друг принцип, който ще ви помогне да пишете по-чисти програми. Състои се във факта, че подготвяте данни на едно място (да речем модели) и взаимодействате с тях на друго.

Когато PHP стартира за първи път, той беше по-скоро система за шаблони. Проектите на този език съдържаха смесен HTML и PHP код. Сега всичко се промени и всеки трябва да премине към ново ниво на писане на приложения.

Можете да изработите за себе си някакъв специален стил или да използвате най-популярните средства до момента.

Популярни PHP рамки:

Системи за шаблони:

Популярна CMS

13. Специален синтаксис за шаблони

Ако не искате да използвате системата за шаблони, тогава най-вероятно ще трябва да развиете свой собствен стил на инжектиране на PHP код в HTML.

И ето един пример:

Здравейте, потребителско име; ?>
|

Моето табло за съобщения

заглавие; ?>

Форуми като $forum): ?>

id, $forum->title) ?> (теми->брой(); ?>нишки)

описание; ?>

Тази техника ще ви позволи да избегнете допълнителни скоби. Освен това такъв код се вписва добре в контекста на HTML.

14. Процедурни и обектно-ориентирани подходи

Обектно-ориентираното програмиране ще ви помогне да се придържате към повече или по-малко ясна структура, но това не означава, че трябва да се отклонявате от процедурните принципи на писане на приложения.

Обектите са чудесни за представяне на данни. Пример:

Потребител на класа ( public $username; public $first_name; public $last_name; public $email; public function __construct() ( // ... ) public function create() ( // ... ) public function save() ( / / ... ) публична функция delete() ( // ... ) )

Процедурните методи имат своя собствена специфична полезност.

Функция capitalize($string) ( $ret = strtoupper($string); $ret .= strtolower(substr($string,1)); return $ret; )

15. Прочетете кода с отворен код

Обикновено проектите с отворен код се пишат от голям брой разработчици. От тази гледна точка изучаването на писмения код в подобни проекти може да ви помогне да придобиете опит. Така че не си губете времето с това.

16. Рефакторинг

Рефакторингът променя кода без загуба на функционалност. Може да се използва и за подобряване на четливостта.Няма място за коригиране на грешки или добавяне на функционалност. Просто променяте малко структурата на вашия код.

Надявам се тази статия да ви е била полезна! Изпускам ли нещо? Споделете своя опит!

WordPress.com не позволява използването на потенциално опасен код в блога, но е възможно да публикувате изходния код за преглед. Създадохме етикет, който запазва форматирането на изходния код и дори осигурява подчертаване на синтаксиса за някои езици. Пример:

#button ( тегло на шрифта: удебелен; граница: 2px плътен #fff; )

За да получите резултат, подобен на горния фрагмент, обвийте кода си в тези тагове:

Вашият код

Параметърът "език" указва правилата за осветяване на езика и синтаксиса. Поддържат се следните стойности:

  • actionscript3
  • студен синтез
  • csharp
  • делфи
  • ерланг
  • fsharp
  • Groovy
  • javascript
  • javafx
  • matlab
  • powershell
  • питон
  • скала

Ако стойността на параметъра "език" не е зададена, се използва стойността "текст" (без подчертаване на синтаксиса).
Кодът между таговете "code" ще бъде автоматично кодиран за показване, така че не е нужно да се притеснявате за HTML елементи или нещо подобно.

Опции за конфигурация

Етикетите също поддържат много опции за конфигурация, които можете да използвате, за да персонализирате външния вид и усещането. Използването им е напълно незадължително.

  • автоматични връзки (true/false) – Всеки URL в кода се изобразява като хипервръзка. Стойност по подразбиране: вярно.
  • свиване (вярно/невярно) – Ако е зададено на вярно, кодовата област ще се свие при зареждане на страницата. За да го разгънете, ще трябва да кликнете върху него. Това е полезно за големи кодови фрагменти. Стойността по подразбиране е false.
  • firstline (номер) – Указва номера, от който започва номерирането на редовете. Стойност по подразбиране: 1.
  • gutter (true/false) – Ако е зададено на false, номерата на редовете ще бъдат скрити. Стойност по подразбиране: вярно.
  • подчертаване (числата разделени със запетаи) - Номерата на редовете, които трябва да бъдат маркирани, например "4,7,19".
  • hmtlscript (true/false) – Ако е зададено true, се извършва осветяване на HTML/XML код. Това е полезно при публикуване на смесен код като PHP в HTML. Работи само с някои езици. Стойност по подразбиране: невярно.
  • светлина (true/false) - Ако е зададено true, номерата на редовете и лентата с инструменти ще бъдат скрити. Това е полезно, когато публикувате кодов фрагмент от един или два реда. Стойност по подразбиране: невярно.
  • padlinenumbers (true/false/integer) – Позволява ви да контролирате подпълването на номерата на редовете с нули. Истинската стойност задава автоматично довършване, невярната стойност деактивира довършването, числото задава фиксиран брой знаци за номера на редове.
  • лента с инструменти (true/false) – Ако е зададена на false, няма да се появи лента с инструменти с бутони, когато задържите курсора на мишката върху кода. Стойност по подразбиране: вярно.
  • wraplines (true/false) – Ако е зададено на false, обвиването на редове ще бъде деактивирано. Ако има дълги редове, ще се появи хоризонтална лента за превъртане.
  • title (string) – заглавие на кода. Може да е полезно в комбинация с опцията за свиване.

Примери за използване на горните параметри:

Този ред не е маркиран. Този ред е подчертан. Този ред е подчертан. Този ред не е маркиран. Това е кратък кодов фрагмент с подпълване на номера на редове с нули до 4 знака. //В този пример пренасянето на ред е деактивирано. За да прочетете целия текст, ще трябва да използвате лентата за превъртане. Освен това този пример деактивира номерирането на редове и скрива лентата с инструменти.

И това е по-голяма част от кода. Тук е избран PHP и е маркиран ред номер 12.

Пример за код на WordPress.com

Пример за код на WordPress.com

Този ред е подчертан. Много-много-много-много-много-много-много-много-много-много-много-много-много-много-много-много-много-много-много-много дълга линия.
Това е пример за интелигентни раздели.
wordpress.com

Благодаря
За реализиране на тази функция се използва проектът SyntaxHighlighter (автор Алекс Горбачев). Потребителите могат да зададат подходящите

Поздрави приятели. Днес ще разберем как да накараме всеки PHP код да работи в уиджети, статии и страници на WordPress. По подразбиране такава функция не е налична в тази CMS и максимумът, на който потребителят може да разчита, е въвеждането на HTML код.

Защо PHP кодът не работи по подразбиране

Изглежда защо разработчиците не са възнаградили такъв популярен и удобен двигател с полезни функции за автоматично изпълнение на PHP код. Първоначално се замислих, но стигнах до извода, че подобна политика се провежда от позицията на сигурността, защото неумелото използване на PHP в уиджети или вътрешни записи може да доведе до непоправими последици - нещо ще се счупи в базата данни и целият сайт ще мрънка.

Следователно работата с PHP е на милостта на програмисти или хора, които са повече или по-малко напреднали в този въпрос - всички скриптове се изпълняват директно във файлове.

За публични сайтове (където има няколко автора), изпълнението на PHP в тялото на статията увеличава риска от умишлен саботаж, тъй като всеки автор може да получи пълен достъп до сайта през прозореца за редактиране на статия.

Според степента на опасност бих разделил цялата тази ситуация на 3 нива:

  1. Трудно е да оставите всичко, както са предвидили разработчиците - трудно е да повредите сайта безопасно, случайно или умишлено.
  2. Разрешаване на PHP изпълнение в уиджети - средно ниво на сериозност, само администраторът на сайта има достъп.
  3. Използването на кода навсякъде е опасно, тъй като всеки, който има право да редактира статии и страници (модератори, автори), може да управлява сайта

За какво е PHP в Widgets?

Въпросът е индивидуален, тъй като с този език за програмиране може да се реализира всичко. Лично аз бях подтикнат да напиша тази публикация от поръчка на клиент, чийто сайт изграждам в момента. На него беше необходимо в страничната лента в отделен уиджет да се покаже списък с новини от една рубрика - "Новини". В стандартните уиджети на WordPress няма такава опция.

Въпросът беше между намирането на плъгин с подходящите възможности или използването на прост PHP код. Скриптът за такава задача е наистина малък и не исках да зареждам сайта с допълнителен плъгин, който няма да се използва никъде другаде.

Като цяло, позволявайки изпълнение на PHP, можем да разрешим 2 проблема:

  • Заменете част от плъгините на сайта със скриптове и по този начин намалете натоварването на хостинга;
  • Внедрете функции, за които все още не съществуват добавки.

На първия етап ще говоря за джаджи, а след това, в отделен блок, за показване на код в съдържанието.

Плъгини за PHP в Widgets

Предимството на плъгините: При промяна на темата на WordPress, работата на функциите, добавени към шаблона, не се нарушава, всичко продължава да работи, без да е необходима намесата на уеб администратора. Куките, добавени към шаблона при промяна на темата, ще трябва да бъдат прехвърлени ръчно към новата.

В моя пример по-горе, аз правя уебсайт за клиент и ако той иска сам да промени дизайна, настройките, които са направени чрез файловете functions.php и други ще изчезнат, така че го улеснявам максимално той да управлява сайта, разчитайки на плъгини (особено в неговата ниша трафикът е малък и натоварването няма да е много).

Приспособление за PHP код

Използвам този плъгин в работата си от дълго време, той добавя уиджет към списъка с налични уиджети, подобен на обикновен текстов, само способен да обработва PHP в допълнение към текст и HTML.

PHP Code Widget присъства в официалното хранилище на WordPress, лесно се намира по име. Как да инсталирате такива добавки.

Не са необходими настройки, джаджата ще се появи в списъка веднага след инсталиране и активиране на приставката. Плъзнете „PHP код“ в страничната лента и добавете произволен скрипт там.

PHP в WordPress widget без плъгин

В този случай се нуждаем от кука, която ще замени стандартна функция, който осигурява работата на текстов уиджет на WordPress, функция, която позволява обработката на PHP.

Тази кука се добавя към файла functions.php на текущата тема (в самия край преди затварящата скоба?>). След това новите опции за джаджи, както в случая с приставката, не се появяват, PHP кодовете започват да работят в стандартен текст.

Завършен код:

Add_filter("widget_text"," text_html_php_widget ",100); функция text_html_php_widget($text) ( if(strpos($text,"".$текст); $текст = ob_get_contents(); ob_end_clean(); ) върне $текст;)

Първият ред е филтър, който заменя стандартната текстова функция за изпълним елемент с нова, text_html_php_widget, при всяко извикване, а след това следва описанието на най-новата функция.

Защо PHP код в WordPress статии и публикации

В публикациите изпълнимият PHP код се изисква много по-рядко, отколкото в уиджетите, така че в първата част на статията разгледах отделно страничната лента, за да можете да избегнете ненужното включване на потенциално опасни функции.

Но дори и в публикациите има нужда от използване на скриптове. Най-често срещаният пример е извеждането на карта на сайта без плъгин. Вярно, можете да използвате друга техника за картата - направете специален шаблон за страница (това е отделна тема).

Веднъж имах нужда от PHP изход за следната цел:

Направих видео сайт. Епизодите от сериала се показваха в плейлисти по сезон и беше необходимо под всеки плейлист от сезона да се показва списък с епизоди с връзка към вашата страница. Прилича на карта на сайта, само че по-сложно - заключението трябваше да се направи чрез списъци с отделни заглавия. Възможно е ръчно да се напише всяка връзка с HTML код, но има няколкостотин серии и процедурата е досадна. Освен това, когато се появи нова серия, връзката към нея ще трябва да се добави ръчно - неудобно. Затова реших да използвам PHP функции за внедряване.

Плъгин за изпълнение на PHP в Exec-PHP съдържание

Въпреки факта, че този плъгин не е актуализиран от 7 години, той върши отлична работа. И го избрах с причина - той не използва никакви кратки кодове, като конкурентите, но ви позволява да вмъквате в публикации код на wordpressв най-чист вид, от .

Плъгинът Exec-PHP е в хранилището и се инсталира през менюто в административния панел на двигателя.

От настройките има само една - разрешение / забрана за изпълнение на код в текстова джаджа, няма възможност за деактивиране на работата в публикации и на страници, ако трябва да я премахнете - деактивирайте приставката.

За да вмъкнете PHP код в статия, тя трябва да бъде превключена в HTML режим (раздел „Текст“). Визуалният режим вероятно ще развали кода.

Изпълнение на PHP код в WordPress статии без плъгин

По аналогия с уиджетите, можем да заменим плъгина със специална функция, която позволява изпълнението PHP скриптовев съдържанието. За съжаление не можах да намеря опция, при която кодът да работи автоматично, както в случая с плъгина, реагиращ на тагове. Изисква се кратък код. Познанията ми по PHP не бяха достатъчни за самостоятелно писане желаната функция, за сим го нося както си е. Работата с кратък код има значителен недостатък, който усложнява работата, който ще разгледам по-долу.

Как да работите с функцията по-долу

  1. Поставете го във файла functions.php на темата;
  2. На правилното място в статията вмъкваме конструкция - изпълним код без

функция:

/* Стартиране на php в статии и страници на WordPress: код */ функция start_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean();"); return $inline_execute_output ; ) функция inline_php($content)( $content = preg_replace_callback("/\((.|\n)*?)\[\/startphp\]/", "start_php", $content); $content = preg_replace( "/\((.|\n)*?)\[\/startphp\]/", "$1", $content); върне $content; ) add_filter("the_content", "inline_php");

недостатък

Ако във вмъкнатия PHP код има вмъкване на HTML или текст, той няма да работи. Всеки текст или етикети ще трябва да бъдат вмъкнати с помощта на командата echo, което не винаги е удобно. Това означава, че кодът трябва да бъде чисто PHP-shny 100 правилен формат.

вярно

Echo "Това ще работи";

погрешно

Echo "Този ред е правилен"; Това няма да работи

В приставката Exec-PHP няма такъв проблем - и текстът, и HTML ще бъдат изпълнени, но всички елементи на PHP кода трябва да бъдат рамкирани в съответните тагове.

За много уеб администратори темата, описана в тази статия, отваря безкрайни възможности за творчество - можете да внедрите това, което не сте могли да правите преди, както и да се отървете от много добавки, като ги замените с различни филтри, функции и кукички.



Зареждане...
Връх