PHP код у WordPress - найкращі практики. Як написати плагін для WordPress Приклади написання коду в wp

Здрастуйте, шановні читачі блогу сайт. Сьогоднішню публікацію я вирішив присвятити питанню написання статей у HTML редакторі WordPress().

Справа в тому, що іноді в адмінці не виходить задіяти візуальний редактор (найчастіше це буває пов'язано з проблемами хостингу), а без нього блогерам-початківцям досить складно буде писати правильно і красиво оформлені статті, бо працюючий у всіх без винятку простий редактор вимагає хоча б .

У мене, коли я тільки починав вести цей блог і знайомитися з двигуном, якраз і не вдалося задіяти візуальний редактор. Не допомагали ні додаткові плагіни з різними версіями, ні інші «танці з бубном». Тому мені хоч-не-хоч довелося освоювати наявний базовий редактор, благо, що з мовою гіпертекстової розмітки я на той час був уже досить знайомий.

Використання лише HTML редактора в WordPress

Але справа була навіть не в HTML, а в зручності виконання повсякденних дій, що часто зустрічаються. Так, редактор WordPress, який використовується за замовчуванням, дозволяє однією кнопкою виділяти жирним (тег STRONG) та курсивом (EM), вставляти посилання, цитати, картинки, нумеровані та марковані списки, виділяти різний код та .

Але цього було недостатньо, т.к. у тексті статей активно використовував внутрішні заголовки різних рівнів (від H2 до H5), виділяв код (PHP, CSS тощо) спеціальними тегами і робив багато іншого.

Так от усе, що не входило в стандартний набір інструментів базового редактора Вордпреса, доводилося вводити ручками з клавіатури, а це зовсім не полегшувало працю створення постів і сильно діставало.

Але ця проблема успішно вирішилася завдяки чудовому WP плагіну Post Editor Buttons, за допомогою якого можна додати скільки завгодно багато додаткових кнопок на панель інструментів HTML редактора, запрограмувавши їх на певні дії.

Сьогодні ми розглянемо написання постів у WP у всіх подробицях від початку і до кінця, не опускаючи нюансів і тих прийомів, які, на мою думку, допомогли блогу сайт (ви його зараз якраз і читаєте, якщо, звичайно, цю статтю не вкрали і не розмістили на іншому сайті) вийти на рівень кількох тисяч унікальних відвідувачів.

Тобто ця публікація буде розгорнутим додатком до статті (це не оригінальна назва, а взята з ретвітту одного з читачів, але воно, на мою думку, навіть більш вдале, ніж моя оригінальна назва).

У тій статті я загалом описав ті нюанси, які, як мені здається, вплинули на приплив трафіку (відвідувачів) з пошукових систем, а в цьому пості спробую заглибитися в деталі, які найчастіше бувають дуже важливими і не очевидними на перший погляд.

До того ж, думаю, що блогеру-початківцю або тим, хто ще тільки замислюється про створення і ведення власного проекту, буде не цікаво дізнатися про те, як все виявляється просто в WordPress, якщо знати, що і де зробити для отримання потрібного результату. Ну гаразд, вступ затягнувся, настав час приступати безпосередньо до викладу матеріалу.

Для тих у кого поки що немає свого WP блогу, але бажання стати блогером є, або ж для тих, хто хоче переїхати з іншого блогового движка або безкоштовної платформи на WordPress, я наведу посилання на матеріали щодо нього встановлення та початкового настроювання:

Приступаємо до написання статті у HTML редакторі WordPress

Отже, для написання нової статті вам потрібно буде зайти в адмінку (http://sait.ru/wp-admin/) та вибрати з лівого меню (якщо у вас використовується стандартне оформлення адмінки WP) пункт «Додати нову» в області «Записи ».

В результаті відкриється стандартна сторінка додавання статті (поста), в якій буде присутнє поле для введення її заголовка і велике поле для введення тексту посту.

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

Але при цьому заголовок статтіу Вордпрес обов'язково повинен добре корелюватися з її текстом (бути релевантним тексту посту). До того ж, його показуватимуть у пошуковій видачі і від того, наскільки він буде привабливим, залежатиме подальша доля вашої публікації (якщо по ньому кликати не будуть, то погіршаться поведінкові фактори і він піде з Топа).

Зазвичай остаточний варіант назви я формую після написання самої статті. Іноді копіюю всі проміжні підзаголовки в окремий текстовий файлі тримаючи їх усе перед очима формую спільний, намагаючись врахувати все, що згадувалося у ній.

Напевно, саме тому мої тайтли дуже довгі, але, як показує практика, нічого в цьому страшного немає. Пошуковики чудово справляються з моїми заголовками і в пошуковій видачі відображається та частина TITLE, у якій зустрічаються слова пошукового запиту.

Чому ж так важливий заголовок для просування сторінки в пошукових системах? Та тому, що для них він є основним критерієм визначення релевантності (ступеня відповідності та інші складні слова) вашої статті тому чи іншому пошуковому запиту.

Хоча ні, не зовсім так. Не назва посту, а заголовок сторінки TITLE є найважливішим критерієм для пошукових систем при визначенні позиції за тим чи іншим пошуковим запитом (дивіться у всіх подробицях).

А до чого тут тоді заголовок посту у WP? А при тому, що правильний TITLE має формуватися із назви статті плюс назви всього блогу, і саме так. До речі, налаштувати правильне формування TITLE у WordPress зможете. Плагін просто чудовий, що одночасно дозволяє вирішити масу питань щодо внутрішньої оптимізації.

Звертаю вашу увагу на різницю між HTML тегом логічного виділення «STRONG» і ще одним тегом виділення жирним «B», а також між «EM» та «I». Перші з цих тегів ( STRONG та EM) слід використовувати не тільки для привернення уваги читачів до важливих моментів тексту.

Пошуковики враховуватимуть із великою вагою слова та словосполучення, виділені цими тегами акцентування (STRONG і EM), порівняно із звичайними, не виділеними словами тексту. Однак, зараз потрібно бути з цим дуже обережним, щоб не перегнути ціпок і не .

Вибір оптимальної структури заголовків рівня H1-H6

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

У цих внутрішніх підзаголовках, так само як і TITLE, повинні бути ключові слова і словосполучення, за якими ви хочете просунутися в пошукових системах. Пошук їх враховуватиме з більшою вагою, ніж звичайні. Але знову ж таки, не в жодному разі не можна спамити ключами, бо за це можна постраждати в сучасних умовахпросування.

Крім того, що внутрішні підзаголовки (зазвичай, починаючи з рівня H2, H3 і далі) надають додаткову можливістьструктурування тексту, що покращує їхнє сприйняття читачами.
Але є ще одне питання внутрішньої оптимізації сайтів, яке пов'язане з рівнями заголовків (від H1 до H6), які використовуються на сторінках WordPress блогу.

Основний спосіб розподілу рівнів заголовків по веб-сторінці свідчить, що заголовок усієї статті повинен бути укладений у тег H1 (самий високий рівень) та він має бути один на сторінці, а всі внутрішні підзаголовки в тексті повинні починатися з H2.

До речі, хочу порадити вам дуже зручний спосіб, що дозволяє наочно побачити WordPress, де і якого рівня заголовки використовуються на тому чи іншому сайті. Це плагін для FireFox () під назвою .

Так ось, якщо ви оберете з меню цього плагіна (його меню додається до верхньої частини браузера) пункти «Контури» — «Контури заголовків», то всі знайдені на відкритій Наразіу браузері веб-сторінки будуть обведені різнокольоровими прямокутниками, поруч із якими буде підписано їх рівень H1 -H6.

Як очевидно з наведеного вище малюнка, для заголовка статті встановив рівень не H1, а H2, тоді як H1 використовується укладання у нього описи всього проекту, тобто. не до якоїсь конкретної статті, а до всього блогу цілком.

Цей Маул в одній зі своїх статей згадав, що заголовок рівня H1 повинен бути на сайті однаковий для всіх веб-сторінок, але свою ідею він ніяк не аргументував. Проте я використовую саме його схему. Для внутрішніх підзаголовків використовую теги H3 та H4 (іноді і H5).

Ще один аспект. На головній назви постів у мене є посиланнями, які ведуть на веб-сторінку повними версіями, але вже на цих сторінках з повними текстами постів, назви статей перестають бути посиланнями. Десь я вичитав, що так буде краще.

Тепер ще треба трохи розповісти про те, як можна в WordPress поміняти втрати HTML тегів заголовків, наприклад, для статей, або додати, як це зробив я, один загальний для всіх рівня H1.

Для цього вам потрібно буде підключитися до сервера хостингу, на якому розташований ваш блог за протоколом FTP, наприклад . Всі файли, які нам можуть знадобитися, знаходяться в папці з темою (шаблоном) WordPress, яку ви використовуєте, яку ви зможете знайти по цьому шляху:

/wp-content/themes/Назва теми/

Для того, щоб ясніше представляти структуру та призначення файлів (шаблонів) теми оформлення WordPress, раджу вам ознайомитись зі статтею наведеною на початку цієї публікації (у списку).

Давайте подивимося, де можна змінити рівень основних назв статей, розміщених на головній (за її вигляд відповідає файл INDEX) та на сторінках з повними версіями статтями (файл SINGLE).

Відкриємо спочатку на редагування INDEX. У мене в ньому назви статей WordPress укладені в HTML тег H2 (другого рівня) і крім цього є посиланнями, бо укладені в тег посилання A:

" rel="bookmark" title="(!LANG:Постійне посилання!}">

У постах (за їх зовнішній вигляд відповідає файл SINGLE) основні заголовки вже не будуть посиланнями, хоча теж мають рівень H2:

Якщо вас не влаштує другий рівень, то просто поміняйте в цих файлах (INDEX і SINGLE) теги H2 на теги H1 і збережіть зроблені зміни (хоча, для головної цього робити не можна, бо буде більше одного H1 на сторінці, що не є добре).

Зробити однаковий для всіх сторінок WordPress блог H1 ви можете дуже просто. Для цього потрібно відкрити на редагування HEADER з папки з темою, яку ви використовуєте, і знайти там рядок, де виводиться опис вашого блогу, а потім укласти його в відкриваючий і закриваючий теги H1, а потім зберегти зроблені зміни.

Але повернемося до нашого HTML редактору WordPress і подивимося, які можливості він нам надає, чого нам у ньому не вистачає, а також розглянемо спосіб розширення його можливостей. Ось скріншот панелі інструментів моєї адмінки, на якому виділено червоним ті кнопки, які присутні за замовчуванням:

Зверніть увагу, що кнопки з написами "b" та "i" насправді служать для вставки тегів STRONG та EM.

Але всі ці додаткові кнопки можна буде додати окремо до WordPress за допомогою чудового плагіна Post Editor Buttons, про встановлення та роботу з яким я розповім вже у другій статті цієї серії. Тому залишайтеся на зв'язку, підписуєтеся на стрічку новин і не пропустіть найцікавіше.

Удачі вам! До швидких зустрічей на сторінках блогу сайт

Вам може бути цікаво

Зникло ліве меню в адмінці WordPress після оновлення Порожня сторінка під час перегляду великих постів (статей) у WordPress Де завантажити WordPress - лише з офіційного сайту wordpress.org Як автоматично додати атрибут Alt до тегів Img вашого блогу на WordPress (там, де їх немає) Як відключити коментарі в WordPress для окремих статей або всього блогу, а також прибрати або навпаки підключити їх у шаблоні Як створити список статичних сторінок у WordPress за допомогою wp_list_pages (покращуємо заробіток на вічних посиланнях та статтях)
Установка WordPress у деталях та картинках, вхід до адмінки WP та зміна пароля Смайли в WordPress - які коди смайлів вставляти, а також плагін Qip Smiles (красиві смайли для коментарів)
Зниження споживаної WordPress пам'яті при створенні сторінок - плагін WPLANG Lite для заміни файлу локалізації
Як увійти в адмінку WordPress, а також змінити логін і пароль адміністратора видані вам при установці двигуна
Налаштування блогу на WordPress, які ви повинні зробити одразу після його встановлення

Наважуся припустити, що у вашому житті виникали випадки, коли вам захотілося що-небудь додати (підправити) у темі вашого сайту WP, або у функціоналі якогось плагіна. Причому розробники не заклали цієї можливості у стандартні засоби управління. А ваша душа не визнає жодних обмежень і вимагає польоту фантазії 🙂 Як ви розумієте, вихід є з будь-якої ситуації, в даному випадку нам доведеться підправити код плагіна, теми…

Головна складність у редагуванні коду полягає в тому, що зміни, які ви вносите, на жаль, не зберігаються надовго, і найімовірніше анулюються під час наступного оновлення. Якщо рішення ви бачите в тому, щоб опинитися від оновлень – можу вас відмовити від цього небезпечного неблагородного рішення, оскільки в оновленнях містяться важливі зміни щодо безпеки та усунення помилок, а часто ще й з'являються нові функції.

Тому краще скористатися способами, які встоять у нашому світі, що динамічно змінюється, і разом з цим заощадять ваш дорогоцінний час.

Застереження!

На просторах інтернету ви часто можете зустріти поради, в яких пропонують внести зміни до файлу functions.php- Якщо є будь-яка можливість обійтися без цього - краще не чіпати цей файл. У наведених нижче способах ви побачите спосіб, як це реалізувати. І в будь-якому випадку – потрібно створити дочірню тему та не чіпати батьківську.

Додаючи префікси до функції, завжди застосовуйте кастомний код у вигляді: _ prefix(До назви функції, що змінюється). Це явище убереже вас від конфліктів з іншими функціями теми або плагіна.

Отже, як додати код на WP сайт?

1) Кастомний плагін

Так ви можете вставити кодові сніпети, і вони не будуть видалені при оновленні, а також надалі зможете їх редагувати, активувати або навпаки - деактивувати по необхідності.

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

Далі створюємо головний файл плагіна. Як ви розумієте, він повинен включати назву, опис та основну інформацію, а також код, який допоможе убезпечити плагін від зловмисників. І називаємо цей файл, наприклад moy-plugin.php. Розширення.php покаже WP якою мовою створено даний файл.

Створити файл описаним вище способом можна в будь-якому текстовому редакторі, наприклад NotePad, який вже дбайливо встановлений в операційній системі Windows (TextEdit в Mac). Редактором Microsoft Word краще не користуватися, оскільки він форматує текст, а нам це зовсім не потрібно в даній ситуації.

Отже, ось код, який потрібно додати:

І нижче за цей код вносите свої зміни, яких вимагає ваша творча душа. Додавати PHP-теги, що закриваються, в кінці не потрібно. При цьому назва, опис та URL відображаються у вашій адмінці. І, звичайно, ви можете замінити своєю власною інформацією інформацію «ClubWP»

Після чого залишилося лише запакувати створене у zip-архів та відправити на ftp вашого сайту. У майбутньому так ви зможете внести будь-які зміни вашого плагіна.

Цим не складним способом ви створите простий плагін для ваших потреб.

2) Плагін Code Snippets

Якщо описаний вище спосіб для вас складний, або ви дуже практична людина і звикли отримувати результат швидше - Code Snippets створений спеціально для вас. Як і описана вище можливість, плагін додає ваш код з можливістю подальшого редагування, не використовуючи вашу тему.

Після встановлення плагіна, в адмінці з'явиться нове вікно Snippets, в якому, відповідно, ви зможете внести нові сніпети. Для яких можна внести код та інформацію про його призначення.

Таким чином, вам доступно: включати або відключати кастомний код у вигляді плагінів. Дуже зручно та практично, т.к. іноді можливі конфлікти з темами та плагінами, і ви зможете це легко зрозуміти та відключити створений код.

3) Редагування Functions.php дочірньої теми

Якщо використання плагінів вам не підходить і потрібно внести зміну прямо в тему вашого сайту - це спосіб для вас. Нагадую, що робити це можна лише з дочірніми темами.

Для використання цього методу, пропоную мій шаблон functions.phpдочірньої теми. Розпакуйте та редагуйте файл style.css(назва шаблону та імпорт URL)

P.S.Постарайтеся зробити все можливе, щоб спростити своє життя в майбутньому, в частині вашої нелегкої частки усунення багів і редагування кастомного коду в міру виникнення цієї необхідності.

Читабельність коду – це дуже хвора тема, і їй потрібно приділяти належну увагу. У цій статті ви дізнаєтесь про 16 прийомів, які допоможуть вам просунутися у цій темі.

1. Коментарі та Документація

IDE стають дедалі популярнішими у світі розробників, т.к. вони надають зручні інструменти для коментування та документування коду.

Ось приклад:

Ось ще приклад виклику власного методу:

У цьому прикладі стиль коментування заснований на PHPDoc, а IDE, якою я користуюся, - Aptana.

2. Відступи

Я вважаю, що ви вже знаєте про важливість відступів у вашому коді. Загалом існує кілька стилів форматування коду.

Function foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Function foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Function foo() ( if ($maybe) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Особисто я найчастіше використовую стиль номер #2, але іноді переходжу і на #1. Але це все, звичайно ж, справа смаку. Швидше за все не існує найкращого стилю, який підійшов би абсолютно всім. Цим правилам, насамперед, слід дотримуватися тих, хто працює в команді або бере участь у написанні відкритих проектів.

Також існують стилі, які поєднують деякі характеристики. Наприклад, стандарти написання коду PEAR , де фігурна дужка "(" в умовних операторах залишається на тому ж рядку, а в функціях переноситься).

Стиль PEAR:

Function foo() ( // на новому рядку if ($maybe) ( // на тому ж рядку do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Також слід зазначити, що в цьому стилі замість табів використовуються 4 пробіли.

Ви зможете дізнатися більше про різні стилі.

3. Уникайте зайвих коментарів

Так, коментування коду – це добре; Але тут не треба переборщувати. Ось приклад:

// отримуємо код країни $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); // якщо країна US if ($country_code == "US") ( // відобразити форму echo form_input_state(); )

Якщо робота коду очевидна, то, швидше за все, не слід писати зайві коментарі.

Якщо вже немає, то можна їх трохи скоротити:

// Відобразити форму, якщо країна US $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); if ($country_code == "US") ( echo form_input_state(); )

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

Найчастіше деякі завдання вимагають написання кількох рядків коду. Тому найкраще поєднувати такі завдання в окремі блоки, розділені пробілами.

Ось простий приклад:

// Отримати список форумів $forums = array(); $r = mysql_query("SELECT id, name, description FROM forums"); while ($d = mysql_fetch_assoc($r)) ( $forums = $d; ) // завантажити шаблон load_template("header"); load_template("forum_list",$forums); load_template("footer");

Якщо ви додасте коментар перед початком кожного блоку, це ще більше покращить читабельність вашого коду.

5. Схема іменування

Іноді навіть у мові PHP можна визначити протиріччя іменування функций. І ось численні приклади:

  • strpos() проти str_split()
  • imagetypes() проти image_type_to_extension()

Існує кілька популярних стилів:

  • camelCase: перша літера кожного нового слова заголовна.
  • underscores: Підкреслення між словами: mysql_real_escape_string().

Якщо змішувати ці техніки, то рано чи пізно можна потрапити у незручну ситуацію. Якщо ви працюєте над проектом, в якому застосовується одна з цих технік, то вам треба наслідувати їх приклад. Ще може залежати від мови програмування. Наприклад, більшість Java розробників використовують camelCase а PHP розробники віддають перевагу underscores.

Але й тут не обійшлося без гібриду. Деякі розробники використовують підкреслення в іменуванні класів і методів (поза класами), а в інших випадках використовують camelCase:

Class Foo_Bar ( public function someDummyMethod() ( ) ) function procedural_function_name() ( )

Ще раз скажу, що найкращого стилю не буває. Просто потрібно чогось дотримуватись.

6. Принцип DRY

DRY (Don't Repeat Yourself) – не повторюйся. Також відомо як DIE: Дублювання - це зло.

Головне завдання будь-якої системи, будь то веб-додаток або щось ще, - автоматизувати завдання, що повторюються. Цього принципу слід слідувати завжди і скрізь, особливо якщо ти розробник. Один і той же шматок коду не повинен повторюватися знову і знову.

Наприклад, більшість веб-додатків складається з однієї і більше сторінок. Зрозуміло, що на цих сторінках будуть присутні однакові елементи. Заголовок, футер – найяскравіші приклади. Ви здивуєтеся, але багато людей все ще дублює ці елементи на кожній сторінці.

$this->load->view("includes/header"); $this->load->view($main_content); $this->load->view("includes/footer");

7. Уникайте глибокої вкладеності

Читабельність коду різко зменшується, якщо у вас є глибока вкладеність.

Function 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; ) )

Для того, щоб виправити ситуацію, вам слід переглянути принцип роботи вашого коду та оптимізувати його:

Function 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(" [email protected]")->add_to(" [email protected]")->set_subject("Methods Chained")->set_body("Some long message")->send(); // добре $my_email ->set_from(" [email protected]") ->add_to(" [email protected]") ->set_subject("Methods Chained") ->set_body("Some long message") ->send(); (users.id, user_posts.user_id) WHERE post_id = "123""; // погано $query = "SELECT id, username, first_name, last_name, status FROM users LEFT JOIN user_posts USING(users.id, user_posts.user_id) WHE post_id="123"";

Більшість розробників дотримуються ліміту 80 і 120 символів.

9. Організація Файлів та Папок

Технічно ви можете помістити весь код вашої програми в один файл:) Але що ви робитимете, коли треба буде щось змінити або додати.

Пам'ятаю свої перші проекти, де я приєднував файли. Проте організація у мене сильно шкутильгала. Я створював папку “inc”, у якій розташовував кілька файлів: db.php та functions.php. У процесі написання програми ця папка пухла і пухла і зрештою було важко зрозуміти, що де.

Щоб вирішити цю проблему краще користуватися різноманітними фреймворками або хоча б дотримуватися їх структури. Ось так виглядає проект на CodeIgniter:

10. Назви змінних

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

Давайте розглянемо кілька прикладів:

// $i для циклів 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 table"; $ 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.

А ось і приклад:

Hello, username; ?>
|

My Message Board

title; ?>

Forums as $forum): ?>

id, $forum->title) ?> (Threads-> count (); ?> threads)

description; ?>

Така техніка дозволить вам уникнути зайвих дужок. Також такий код успішно вписується в HTML контекст.

14. Процедуральний та об'єктно орієнтований підходи

Об'єктно орієнтоване програмування допоможе вам дотримуватися більш менш чіткої структури, але це все не означає, що ви повинні відступати від процедуральних принципів написання додатків.

Об'єкти чудово підходять для представлення даних. Приклад:

Class User ( public $username; public $first_name; public $last_name; public $email; public function __construct() ( // ... ) public function create() ( // ... ) public function save() ( / / ... ) public function delete() ( // ... ) )

Процедуральні методи мають свою специфічну користь.

Function capitalize($string) ( $ret = strtoupper($string); $ret .= strtolower(substr($string,1)); return $ret; )

15. Читайте Open Source Код

Зазвичай, проекти Open Source пишуться великою кількістю розробників. З цього погляду вивчення написаного коду в подібних проектах може допомогти вам набратися досвіду. Тож не шкодуйте на це часу.

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

Рефакторинг – це зміна коду без втрати функціональності. Його також можна застосовувати для покращення читабельності. Тут немає місця виправленню багів або додавання функціональності. Ви просто трохи змінюєте структуру коду.

Сподіваюся, ця стаття була вам корисною! Я щось упустив? Поділіться вашим досвідом!

Одного разу Ви вирішили створити свій сайт або блог, а для системи управління Ви вибрали WordPress ... Минув час ваш сайт стає все більш і більш читаним і тут, ви зрозуміли, що для ще більшої популярності необхідно додати трохи функціоналу до сайту або просто автоматизувати яке- то дію.

Ви йдете на склад плагінів для wordpress і виявляєте, що необхідного плагіну для Вас немає. Що ж робити? Як бути? Якщо ви хоча б трохи знайомі з азами програмування на php, верстці, то Вам не важко. Самому написати плагін для WordPress.

А тепер вирушимо на «кухню» для виготовлення нашого плагіна.

P.s. Якщо знань у php та верстці нема… не засмучуйтесь, попросіть будь-кого написати Вам потрібний функціонал 🙂

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

Я не дублюватиму цю інформацію, а відразу перейду безпосередньо до написання коду.

Напишемо простенький плагін, який дозволить зберігати та виводити відгуки про Ваш сайт. Звичайно, такі плагіни вже є, але для прикладу зійде якраз.

Перше, що ми зробимо, це придумаємо унікальну назву нашому плагіну - AdvUserReviews«.

Далі створимо в директорії Вашого сайту /wp-content/plugins/ нову директорію advuserreviews. І в ній створимо файл advuserreviews.php. Це буде основний файл, який відповідатиме за загальну ініціалізацію. (Використовуйте кодування для файлів UTF-8).

На самому початку файлу необхідно вказати основну інформацію про плагін

Тепер, якщо перейти в панель управління, можна побачити, що система знайшла новий плагін і пропонує його активувати. Але поки що це робити зарано.

Наш новий плагін ми писатимемо в стилі ООП і вся обробка даних буде в одному файлі. Створимо основний каркас файлу.

// Stop direct call if(preg_match("#" . basename(__FILE__) . "#", $_SERVER["PHP_SELF"])) ( die("You are not allowed to call this page directly."); ) if (!class_exists("AdvUserReviews")) ( class AdvUserReviews ( // Зберігання внутрішніх даних public $data = array(); // Конструктор об'єкта // Ініціалізація основних змінних function AdvUserReviews() ( ) ) ) global $rprice; $rprice = New AdvUserReviews();

Тепер конструктор об'єкта доповнимо наступним кодом:

Function AdvUserReviews() ( global $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 = $ "adv_reviews"; // Функція яка виконується при активації плагіна register_activation_hook($this->plugin_name, array(&$this, "activate")); // Функція яка виконується при деактивації плагіна register_deactivation_hook($this->array (&$this, "deactivate")); // Функція яка виконується видаленні плагіна register_uninstall_hook($this->plugin_name, array(&$this, "uninstall")); )

У конструкторі об'єкта ми використовуємо 3 «хуки» або «зачіпки» (що це?): register_activation_hook, register_deactivation_hookі register_uninstall_hook- це функції, що виконуються при активації, деактивації плагіна та його видалення відповідно.

Тепер безпосередньо реалізуємо ці функції.

/** * Активація плагіна */ function activate() ( global $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 (! empty($wpdb->charset)) $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; if (! empty( $wpdb->collate)) $charset_collate .= " COLLATE $wpdb->collate"; ) // Структура нашої таблиці для відгуків $sql_table_adv_reviews = " CREATE TABLE `".$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, `0 VARCHAR(200) NULL, PRIMARY KEY (`ID`))".$charset_collate.";"; // Перевірка на існування таблиці if ($wpdb->get_var("show tables like "".$table.""" ) != $table) ( dbDelta($sql_table_adv_reviews); ) ) /** * Деакт івація плагіна */ function deactivate() ( return true; ) /** * Видалення плагіна */ function uninstall() ( global $wpdb; $wpdb->query("DROP TABLE IF EXISTS ($wpdb->prefix)adv_reviews"); )

Змінна $wpdbвідповідає за запити до бази даних. Функція dbDeltaаналізує поточну структуру таблиці, порівнює ee з бажаною структурою таблиці, або додає або змінює таблицю в міру необхідності.

Відповідно, при активації плагіна створюється структура таблиці зберігання відгуків. При деактивації плагіна не відбувається жодних дій, а при видаленні ми видаляємо нашу таблицю. Докладніше дії можна зрозуміти за вихідним кодом.

Основна структура нового плагіну готова. Тепер необхідно розпочати написання функціональної частини. Для цього до конструктора класу нам необхідно додати наступні рядки коду:

// Якщо ми в адм. інтерфейс 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- Додаємо нове меню в панелі керування

Кожному хуку відповідає реалізований метод у нашому класі. У якому виконуються необхідні операції.
Розглянемо код для підключення стилів та скриптів

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

Тут застосовуються такі функції.

Кожна дія залежить від переданого параметра action, відповідно edit -редагування відгуку, submit - збереження відредагованого відгуку і delete - видалення відгуку.

Обмін даними зі сторінками відображення відбувається через властивість об'єкта data. Вихідний код цих сторінок буде викладено в архіві з цим модулем наприкінці статті. Тут я їх не вставлятиму, так як топік вже виявився досить великим.

На цьому з панеллю адміністрування закінчуємо і переходить до відображення та додавання відгуків з боку користувачів.

Щоб вказати wordpress, коли викликати наш плагін, необхідно зареєструвати «shortcode», що було зроблено в конструкторі нашого класу. Докладніше про це.

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

Тепер на будь-якій сторінці сайту можна розмістити такий код і це змусить виконати вказану нами функцію (передається другим параметром). Нижче наведено вихідний код цієї функції.

/** * Список відгуків на сайті */ public function site_show_reviews($atts, $content=null) ( global $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 (); ; ) private function add_user_review() ( global $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 запит на вибірку даних, якщо переданий параметр «action», то спочатку додається новий відгук. Але варто звернути увагу на буферизацію виводу. Вона необхідна для того, щоб отримати дані сторінки, що вставляється.

От і все. Тепер можна побачити, що в нас вийшло. А скачати плагін та вихідні кодиможна ось.

Само собою це лише приклад створення плагіна, але й зійде як проста гостьова дівчина, якщо її трохи допрацювати, наприклад, додати захист від ботів та посторінковий висновок. Вдалого кодингу:)

Форма на сайті:

Панель управління плагіном:

Редагування відгуку:

Можливо також вам буде цікаво:


Здрастуйте, шановні читачі a! Я вже згадував про важливість того, щоб мати під рукою якісну вибірку корисних фрагментів (вставок) коду. Проте розглядалися. Сьогоднішній пост буде присвячений фрагментам коду, за допомогою яких можна розширити або вдосконалити роботу сайту на движку. Добірка складається з 10 фрагментів коду. Приступаємо:

Посторінкова навігація без плагіна

Динамічний копірайт текст

Цей фрагмент дозволяє створювати простий текст авторського права у підвалі. Дата встановлюється автоматично, використовується функція the_date().
Просто скопіюйте фрагмент у свій footer.php:

< b>(c)
| < a href= "" >
|

інформація про користувача

WordPress дозволяє користувачам додавати інформацію про себе у своєму профілі у WP Admin. Для відображення інформації користувачів, Ви можете використовувати цей фрагмент:

Для роботи кнопочки необхідно підключитися до , додаємо наступний рядок у файл header.php:

< script type= "text/javascript" src= "https://apis.google.com/js/plusone.js">

PHP код у тексті

Буває при написанні статті потрібно вставити код, але якщо його просто вставити, то він не відобразиться. Щоб цього уникнути, використовуємо наступний фрагмент, його необхідно додати до файлу function.phpтеми:

Не забудьте прибрати прогалини у тегах!
А працює це наступним чином, у місці, де необхідно вставити PHPкод, виділяємо його ось так:

[ code][/code]

Виключити записи з головної сторінки

Щоб виключити всі записи будь-якої категорії з головної сторінки, можна використовувати цей фрагмент, а додати його потрібно до файлу function.phpВашої теми:

1
2
3
4
5
6
7
8
9

function excludeCat($query ) (
if ( $query -> is_home ) (
$query -> set ("cat", "-3,-5,-23");
}
return $query;
}
add_filter("pre_get_posts", "excludeCat");
?>

«Хлібні крихти» без плагіна

Ну і на закуску, ось фрагмент коду за допомогою якого на блозі можна організувати так звані «хлібні крихти», це додатковий елемент навігації, коли відображається шлях у вигляді посилань на сторінки вище за ранг на сторінку категорії та головну. Приблизно так (Головна->Категорія 1->Назва статті). Цей фрагмент коду необхідно вставити у файл function.phpВашої теми:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

function the_breadcrumb() (
echo "

    " ;
    if (! is_home() ) (
    echo "
  • echo get_option("home");
    echo "">";
    echo "Головна";
    echo "
  • " ;
    if (is_category() || is_single() ) (
    echo "
  • " ;
    the_category("
  • " ) ;
    if (is_single() ) (
    echo "
  • " ;
    the_title();
    echo "
  • " ;
    }
    ) elseif (is_page() ) (
    echo "
  • " ;
    echo the_title();
    echo "
  • " ;
    }
    }
    elseif (is_tag() ) ( single_tag_title() ; )
    elseif (is_day() ) ( echo "
  • Архів за " ; the_time("F jS, Y" ) ; echo "
  • " ; }
    elseif (is_month() ) ( echo "
  • Архів за " ; the_time("F, Y" ) ; echo "
  • " ; }
    elseif (is_year() ) ( echo "
  • Архів за " ; the_time("Y" ) ; echo "
  • " ; }
    elseif (is_author() ) ( echo "
  • Архів автора; echo "
  • " ; }
    elseif (isset ($_GET [ "paged" ] ) && ! empty ($_GET [ "paged" ] ) ) ( echo "
  • Архів" ; echo "
  • " ; }
    elseif (is_search() ) ( echo "
  • Результат пошуку"; echo "
  • " ; }
    echo "
" ;
}
?>

Що використовувати ці «хлібні крихти», додаємо до файлів (archive.php, category.php, page.php, single.php, search.php) наступну функцію:

Зовнішній вигляд «хлібних крихт» залишає бажати кращого) Тому Вам доведеться попрацювати над стилями!

На цьому все =)

Щоб залишатися в курсі свіжих статей та уроків, підписуйтесь на



Завантаження...
Top