В WordPress існує досить широкий клас, що надає набір методів для ефективної роботи з базою даних. Ви можете знайти опис цього класу а також усіх його методів у файлі /wp-includes/wp-db.php. А зараз розглянемо найбільш важливі з цих методів, і невеликі приклади їх використання. Важливо вміти використовувати можливості класу $wpdb, для безпечної роботи плагінів. А для хорошої роботи сайту використовуйте хостинг в Украине.
У статті будуть наведені приклади використання наступних шести методів:
- insert($table, $data, $format) - вставляє рядок у таблицю через масиви.
- update($table, $data, $where, $format, $where_format) - оновлює рядок в таблиці через масиви.
- get_var($query, $x, $y) - отримує одиночну змінну з бази даних.
- query($query) - виконує MySQL-запит до бази даних, з поточним підключенням.
- get_results($query, $output) - отримує дані SQL-запиту з бази даних (один чи безліч рядків).
- escape($data) - екранує контент для вставки в базу даних, використовуючи метод addslashes () для безпеки. далі…
Хочу поділитися з вами знахідкою у вигляді одного корисного і чудового плагіна для WordPress – Lightbox Plus [ http://wordpress.org/extend/plugins/lightbox-plus/ ]. Якось по роботі над черговим проектом мені довелося вносити деякі правки і виправляти помилки які заважали нормальній роботі сайту. Зокрема був незрозумілий глюк з досить популярним плагіном Lightbox2 (модуль створює ефектне збільшення зображення блога із затемненням заднього фону). Власне проблема була в тому, що збільшення картинки ніяк не хотіло проходити, і по суті, плагін виявився даремним. А зображення повинні були відображати юридические консультации, а це досить серьозно.
Думаю, ви знаєте як складно часом воно буває «правити» чужі проекти, які ви з нуля не створювали – 50% часу йде на те, щоб зрозуміти як все влаштовано, а решта на рішення поставленої задачі. Насамперед перевірив сумісність встановленого шаблону шляхом заміни на дефолтний шаблону – проблема залишилася.
Оновив всі плагіни і перевірив їх на сумісність. Нічого не створювало проблем поки я не скачав HTML версію сторінки сайту на локальний комп’ютер і шляхом тривалих пошуків не зрозумів, що конфлікт виникав через дві бібліотеки різних плагінів. Можна було спробувати організувати один з модулів «програмним» шляхом, наприклад використовувати скрипт Lightbox 2 без плагіна, але це могло спричинити зміну принципів роботи з сайтом для замовника. Загалом, я вирішив знайти рішення через wordpresss плагін і після довгих пошуків мені це вдалося – Lightbox Plus відмінне рішення проблеми! далі…
Від сьогодні відкриваю на блозі нову категорію – WordPress. Буду писати про цікаві плагіни та корисні функції блогової платформи.
Для WordPress розробників є дві глобальні змінні, які допомагають визначити яка сторінка доступна в момент виконання скрипту:
- $ pagenow – ID поточної сторінки
- $ typenow – поточний користувальницький тип публікації
Починаючи з версії WordPress 3.3 з’явився клас WP_Screen, який дає значно більше інформації про поточну сторінку. Розберемо на прикладі доступу до сторінки:
/wp-admin/edit.php?post_type=event
Для отримання об’єкта класу використовуємо:
$screen = get_current_screen();
Тепер можна отримати доступ до властивостей:
- $ screen-> id: унікальний ID сторінки, в нашому прикладі це буде ‘edit-event‘
- $ screen-> base: тип (базовий тип), в нашому прикладі це буде ‘edit‘
- $ screen-> action: матиме значення ‘add‘ для сторінок *-add.php та *-new.php, у всіх інших буде порожнім
- $ screen-> is_network:
- $ screen-> is_user:
- $ screen-> parent_file:
- $ screen-> parent_base:
- $ screen-> post_type: користувальницький тип публікації, в нашому прикладі ‘event‘
- $ screen-> taxonomy: таксономія, пов’язана зі сторінкою
Використовувати такий об’єкт можна наступним чином:
add_action( 'admin_enqueue_scripts', 'on_enqueue_scripts' );
/**
* Enqueue scripts and styles for editing page of 'event' post type only
*
* @ return void
*/
function on_enqueue_scripts()
{
$screen = get_current_screen();
if ( 'edit' === $screen->base && 'event' === $screen->post_type )
{
wp_enqueue_script( 'event-options', plugins_url('/js/event-options.js',__FILE__),array('jquery'), '1.0', true);
// Enqueue other scripts and styles
}
}
84 дні назад 

