Використання PHP у сторінках із розширенням html. PHP: робимо "міні-БД" на текстовому файлі Зміна кількості записів на сторінці пошуку

Колекція корисних сніпетів (кодів). Коди розраховані на часті завдання під час редагування або створення теми.

Як правило, всі ці коди потрібно розміщувати у файлі теми functions.php . Або, можна створити окремий.php файл розмістити код туди і підключити файл до functions.php теми так:

// підключаємо сніпети require_once "functions-snippets.php";

Зовнішній вигляд CSS для TinyMCE редактора

Підключає файл стилів до редактора WordPress TinyMCE. Так ми зможемо налаштувати стилі редактора в адмінці і при редагуванні запису бачити, як вона виглядає у фронт-енді.

// Стилі для TinyMCE редактора // Потрібно створити файл "editor-styles.css" у папці теми add_action("current_screen", "my_theme_add_editor_styles"); function my_theme_add_editor_styles() ( add_editor_style("editor-styles.css"); )

CSS для сторінки входу (login)

## CSS для сторінки входу (login) ## Потрібно створити файл "wp-login.css" у папці теми add_action("login_head", "my_loginCSS"); function my_loginCSS() ( echo ""; )

CSS для адмін-панелі

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

## CSS стилідля адмін-панелі. Потрібно створити файл "wp-admin.css" у папці теми add_action("admin_enqueue_scripts", "my_admin_css", 99); function my_admin_css()( wp_enqueue_style("my-wp-admin", get_template_directory_uri() ."/wp-admin.css"); )

Видалення Адмін-бару з фронт-енду

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

## Видаляє Адмін-бар з фронт-енду add_filter("show_admin_bar", "__return_false"); ## Включаємо підтримку віджетів. Додаємо область для віджетів if(function_exists("register_sidebar"))( register_sidebar(array("before_widget" => "", "after_widget" => "", "before_title" => "", "after_title" => "", ));

Активація підтримки довільного меню

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

## Add custom menus register_nav_menus(array("main" => "Головне меню", "in_footer" => "Меню в підвалі",));

Додаємо посилання на RSS фід записів та фід коментарів у

Настроювана фонова картинка або фон ## Включає можливість встановлювати фонову картинку з адмінки add_theme_support("custom-background");

В результаті код виведе:

body.custom-background ( background-color: #bdd96e; )

Включення шорткодів у віджет «Текст»

Багато плагінів використовують шотрокди, але не у всіх є віджети. У такому разі було б зручно використовувати шорткод плагіна у віджеті «Текст».

## Шорткоди у віджеті "Текст" if(! is_admin())( add_filter("widget_text", "do_shortcode", 11); )

Випадковий текст за промовчанням у полі контенту в адмінці

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

## Випадковий дефолтний текст для редактора add_filter("default_content", "writing_encouragement_func"); function writing_encouragement_func($content) ( global $post_type; // Тексти для редактора, тип запису post if($post_type == "post")( $array = array("Якесь повідомлення", "Якесь повідомлення", ); return $array[ array_rand($array) ] ) // Тексти для редактора, тип запису page else ( $array = array("Якесь повідомлення", "Якесь повідомлення",); return $array[ array_rand($array) ])

Змінити кількість записів на сторінці пошуку

За замовчуванням на сторінці пошуку показується стільки ж записів на сторінці, скільки і скрізь, скільки виставлено в налаштуваннях.

Цей приклад показує, як вивести 100 записів на сторінці.

## зміна обсягу повідомлень на page page - set here to 100 add_action("pre_get_posts", "search_results_per_page_func"); function search_results_per_page_func($query) ( // запит на сторінці пошуку if(! is_admin() && $query->is_main_query() && $query->is_search())( $query->set("posts_per_page", 100); ) return $query;

Визначає, скільки слів має бути в цитаті, яка зазвичай виводиться на архівних сторінках записів (рубрики, мітки). Цитату виводить функція the_excerpt().

## Зміна довжини цитати add_filter("excerpt_length", "custom_excerpt_length_func"); function custom_excerpt_length_func($length) ( return 20; // у слів )

Видалення полів із профілю в адмінці: AIM, Yahoo IM, Jabber ## видаляє з профілю поля: AIM, Yahoo IM, Jabber / Google Talk add_filter("user_contactmethods", "remove_contactmethod"); function remove_contactmethod($contactmethods) ( unset($contactmethods["aim"]); unset($contactmethods["jabber"]); unset($contactmethods["yim"]); return $contactmethods; ) Додавання полів у профіль адмінці: facebook, twitter ## Додає до профілю поля: AIM, Yahoo IM, Jabber / Google Talk add_filter("user_contactmethods", "add_contactmethod"); function add_contactmethod($contactmethods) ( $contactmethods["twitter"] = "Twitter"; $contactmethods["facebook"] = "Facebook"; return $contactmethods; ) Додавання класу has_sidebar до тега , якщо є сайдбар

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

## Додавання класу `has_sidebar` до тега ``, якщо є сайдбар add_filter("body_class", "has_sidebar_func"); function has_sidebar_func($classes)( if(is_active_sidebar("sidebar"))( // додаємо клас $classes = "has_sidebar"; ) return $classes; )

Додавання віджету в консоль

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

## Довільний віджет в консолі в адмін-панелі add_action("wp_dashboard_setup", "my_custom_dashboard_widgets"); function my_custom_dashboard_widgets() ( wp_add_dashboard_widget("custom_help_widget", "Нотатки теми", "custom_dashboard_help"); ) function custom_dashboard_help() ( echo "

Ласкаво просимо до теми "Моя тема"! Тут деякі нотатки на тему."; )

Отримаємо такий віджет:

Увімкнення скрипту відповіді на коментар

Цей скрипт пересуває форму коментарів, натиснувши кнопку "Відповісти".

## Підключення скрипту відповіді на коментар add_action("wp_footer", "enable_threaded_comments"); function enable_threaded_comments()( if(is_singular() && comments_open() && get_option("thread_comments")) wp_enqueue_script("comment-reply"); )

Зображення Увімкнення мініатюр запису

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

## Увімкнення мініатюр запису add_theme_support("post-thumbnails"); set_post_thumbnail_size(200, 200, true); // Normal post thumbnails

Створення додаткових проміжних розмірів мініатюр

При завантаженні зображення для неї створюються додаткові розміри мініатюри. До базових розмірів можна легко додати свої – довільні.

## Створення проміжних розмірів мініатюр if(function_exists("add_image_size"))( add_image_size("mysize-horizont", 300, 200, true); add_image_size("mysize-vertical", 400, 500, tru

Щоб отримати зареєстрований розмір, скористайтеся функцією:

Додавання мініатюри до RSS фід

Цей код додає мініатюру запису на початок RSS-фіду.

## Додавання мініатюри до RSS фід add_filter("the_excerpt_rss", "add_thumbnail_to_feed"); //add_filter("the_content_feed", "add_thumbnail_to_feed"); // звичайно цей хук не використовується, але теж може бути... => "margin-right:15px;")); $content = $img;

Скасовуємо обгортку картинок у тег

У контенті

При виведенні контенту в темі за допомогою the_content() спрацьовує функція wpautop() і в результаті якщо знаходиться на окремому рядку, він обертається в

Тобто. було стало.

Цей приклад показує, як прибрати таку дивну поведінку.

## Відміняємо обгортку картинок у тег `

` у контенті add_filter("the_content", "remove_img_ptags_func"); function remove_img_ptags_func($content)( return preg_replace("/

\s*((?:]+>)?\s* ]+>\s*(?:)?)\s*/i", "\1", $content); ) // Підключення скрипта html5 для IE з cdn add_action("wp_head", "IEhtml5_shim_func"); function IEhtml5_shim_func()( echo ""; // або якщо потрібна ще й підтримка під час друку // echo ""; )

Встановимо максимальна кількістьревізій запису

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

Ідеально - обмежити кількість ревізій, наприклад до 5:

If(! defined("WP_POST_REVISIONS")) define("WP_POST_REVISIONS", 5);

Визначати константу треба у плагіні чи раніше.

Захист Видалення WP

Потрібно це, щоб хакери не знали версію WP і не могли визначити слабкі місця. Разом із цим кодом потрібно також видалити файл readme.html у корені сайту, тому що в ньому також вказується поточна версія.

## Повне Видалення версії WP ## Також потрібно видалити файл readme.html у корені сайту remove_action("wp_head", "wp_generator"); // із заголовка add_filter("the_generator", "__return_empty_string"); // з фідів та URL

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

У разі помилки, при введенні логіна або пароля, WP повідомляє, що саме було введено неправильно: логін або пароль. Це дає додаткову інформаціюдля "підбирачів" паролів.

Відключимо можливість правити файли в адмінці для тем і плагінів

Можливість редагувати файли прямо з адмінки може стати великою діркою у захисті. Давайте її закриємо.

## Відключимо можливість редагувати файли в адмінці для тем, плагінів define("DISALLOW_FILE_EDIT", true);

Закриємо публікацію через xmlrpc.php

За замовчуванням увімкнено можливість публікації записів через файл xmlrpc.php .

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

## закриємо можливість публікації через xmlrpc.php add_filter("xmlrpc_enabled", "__return_false");

Найчастіше на Web-сайтах можна зустріти сторінки з розміщеними на них HTML-формами. Веб-форми зручний спосібодержання інформації від відвідувачів вашого сайту. Приклад тому – гостьова книга, – яка забезпечує зворотний зв'язокз відвідувачами та розробниками сайту. Форми також зручні і для розробників сайту при розробці CMS, яка дозволяє підтримувати головну властивість сайту - актуальність. Ця стаття присвячена основам створення HTML-форм, їх обробці та способам передачі даних з екранних форм у PHP-сценарії.

1) Створення простої форми

Теги і задають початок та кінець форми. Початківець форму тег містить два атрибути: actionі метод. Атрибут action містить адресу URL сценарію, який має бути викликаний для обробки сценарію. Атрибут методвказує браузеру, який вид HTTP запиту необхідно використовувати для надсилання форми; можливі значення POSTі GET.

Зауваження

Головна відмінність методів POST та GET полягає у способі передачі інформації. У методі GET параметри передаються через рядок адреси, тобто. по суті в HTTP-заголовку запиту, у той час як у методі POST параметри передаються через тіло HTTP-запиту і ніяк не відображаються у вигляді адресного рядка.

Завдання: Нехай необхідно створити список, що випадає, з роками з 2000 по 2050.
Рішення: Необхідно створити HTML форму c елементом SELECT та PHP – сценарій для обробки форми.

Обговорення:

Для початку створимо два файли: form.html і action.php. У файлі form.html буде міститися html-форма з списком, що випадає. Причому значення у списку можна вказати двома способами:

I. Введення даних вручну:


2000
2001
2002
……………………………………………
2050

ІІ. Введення даних через цикл:



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

Опис:

Створимо HTML-форму для надсилання файлу на сервер.




У даній html-формі є елемент browse, який відкриває діалогове вікно, щоб вибрати файл для завантаження на сервер. При натисканні на кнопку "Передати файл"файл передається сценарію-обробнику.

Потім необхідно написати сценарій обробник action.php. Перед написанням обробника необхідно визначитися в який каталог ми копіювати файл:

Зауваження

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

Даний приклад демонструє створення каталогу та копіювання файлу до цього каталогу на сервер.

Також хотів би продемонструвати приклад із елементом checkbox. Цей елемент трохи відрізняється від інших елементів тим, що якщо не один із елементів checkboxЯ не обраний, то суперглобальна змінна $_POSTповерне порожнє значення:


Синій
Чорний
Білий




Є ще питання чи щось незрозуміло - ласкаво просимо на наш

При створенні навіть персонального сайту, далеко не кожен може передбачити все можливі способийого подальшого використання. Дуже важливо підготувати ґрунт для подальшого розвитку сайту. Якщо в минулому ви створили сайт і за умовчанням привласнили всі сторінки розширення.html, а тільки потім вирішили використовувати PHP, то читайте далі.

Раніше для використання SSI, назви сторінок сайту мали закінчуватися розширенням.shtml, але сьогодні більшість інтернет-серверів налаштовані так, що SSI можна використовувати і на сторінках з розширенням.html, що дуже зручно. З PHP зовсім інша історія - розширення.php є розширенням за умовчанням. Розробники сайтів, заздалегідь знаючи, що використовуватиметься дана мовапрограмування, стразу надають правильне розширення.

Але що робити, коли всі сторінки закінчуються розширенням.html?

Замінюємо розширення HTML на PHP

Це можна зробити кількома способами. Найяскравіший спосіб — дати всім сторінкам розширення.php або змінити вже існуючі розширення(.html, .shtml і т.д.). Цей спосіб має недоліки. Наприклад, вже проіндексованим сторінкам з розширенням.html доведеться заново індексуватися пошуковими системами. Або ще гірше - всі зовнішні посилання, які посилаються явно на ту чи іншу сторінку, будуть недійсними. І доведеться сповіщати власників кожного сайту про ці зміни та створювати для кожної сторінки ще одну сторінку із 301 помилкою. Звичайно, змінити одне розширення на інше допустимо, але що робити, якщо сайт вже має багато сторінок і багато посилань на різні сторінкиз інших веб-сайтів?

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

Можна обійтися іншим способом. Якщо сервер, на якому розміщується сайт, підтримує mod_rewrite (у більшості випадків підтримує), і є доступ до файлу.htaccess , то можна додати наступні рядки в цей файл:

RewriteEngine on RewriteRule ^(.*)\.html $1\.php

Додавши цей код в. htaccess можна не хвилюватися. Всі існуючі сторінки з розширенням.html будуть автоматично замінюватися розширенням.php завдяки чудесам від Apache. Але й цей спосіб не єдиний. Можна прописати наступне в тому самому.htaccess файлі:

AddHandler application/x-httpd-php .php .html .htm

На мій погляд, найвдаліший спосіб. Це робить HTML-сторінки рівними PHP-сторінкам, тобто все функції PHPтепер можуть бути використані на сторінках із розширенням HTML. Якщо немає доступу до файлу.htaccess , то можна написати лист хостинг компанії, і ввічливо попросити адмінів прописати конфігурації Apache (httpd.conf) потрібне значення для сайту.

До речі, якщо раніше на сайті використовувалося SSI таким чином:

то тоді в новому PHP'шному стані цей код потрібно замінити на:

Ну от і все, думаю який-небудь із вищенаведених способів допоможе.

At Cheat Happens

Hottest Stuff On CheatCC!


Hottest Stuff On CheatCC!


Level select

Note: Ця процедура involves editing a game file; створіть backup копію файлу до процесу. Використовуйте текстовий editor для редагування "file". Виберіть "DefaultScene=AllLevels/logos.gms" натисніть і змініть його на "DefaultScene=AllLevels/levelmenu.gms". Всі рівні будуть встановлені як встановлені, так і рівні selection menu будуть unlocked.

Level skip

Note:

", де is an uppercase letter. Натисніть на гра і зміни до третьої людини, щоб побачити або використати sniper scope або binoculars. Press that key and the current level will be marked as completed.

Teleport

Note: Ця процедура involves editing a game file; створіть backup копію файлу до процесу. Використовуйте текстовий редактор, щоб edit "keyboard.cfg" файл в грі folder. Locate the following group of text:

Змінити "K_NEXT" текст до "K_ ", де is an uppercase letter. Натисніть на гру і зміни до третьої людини, щоб побачити або використати sniper scope або binoculars. Натисніть, що key and 47 буде телепорт, де crosshairs є на флат solid ground.

Silenced ballers gun

Successfully complete a level with a "Silent Assassin" rank to unlock the silenced ballers gun.

Sawed-off shotgun

Successfully complete a level with a "Silent Assassin" rank twice до unlock the sawed-off shotgun.

M4

Successful complete five levels with "Silent Assassin" rank to get the M4. З іншого боку, успішно спрямовує Шогун Showdown рівень з "Silent Assassin" rank. З іншого боку, успішно збирається в St. Petersburg Stakeout, Tubeway Torpedo, і Invitation до Party levels з "Silent Assassin" rank all in one session.

Gun collection

Черезвсіх рівнів ви будете пускати в різні типи guns. Whenever you see a gun that you do no already have, pick it up. Після того, як ви зробите рівень на якому ви знайдете gun, the gun will now be available at your house. Ви будете зайнятися в кімнаті для вас, щоб використовувати, якщо зайняли. However, є багато шпильок, які є великими вантажами всередині своїх clothes і вониповинні бути вміщені в Open. Ви не можете піти вгору на зразок того ж самого або величезного без викиду the oneви є holding. Ви будете проходити інші шпильки на той самий рівень, що ви не можете стріляти, тому що ви збираєтеся держати один, і gun you want is simply too big to conceal. У цьому випадку, ви будете вирішити, хто звір іде більше, ніж кінець рівня з ним. Ви можете в будь-якому випадку переміщати, що рівень для того, щоб отримати інший gun that був left behind.

Cheat Codes

Note: Ця процедура involves editing a game file; створіть backup копію файлу до процесу. Використовуйте текстовий editor для редагування "file". Введіть лінію "EnableCheats 1" (case-sensitive) до списку файлів. Type one of the following case-sensitive codes while playing the game to activate the corresponding cheat function:

Result Cheat Code
Toggle God mode (US keyboard)IOIRULEZ
Toggle God mode (European keyboard)IOIRULEY
Всі weapons and itemsIOIGIVES
Full ammunitionIOIEQPWEAP
Refill healthIOIHITLEIF
Toggle slow motion enemy deathIOISLO
Toggle bomb modeIOIER
Enable punchingIOIHITALI
Toggle lethal modeIOILEPOW
Toggle gravityIOIGRV
All guns act as nail gunsIOINGUN
Toggle megastrength weaponsIOIPOWER

Від: [email protected], [email protected], and [email protected]

Cheat Codes (demo version)

Note: Ця процедура involves editing a game file; створіть backup копію файлу до процесу. Використовуйте текстовий редактор для редагування "hitman2.ini" файлу в флеш гра. Введіть лінію "налаштуванняналаштування 1" внизу файлу. While playing the game, press ~ , будуть вводити один з наступних кодів на консолі window для активації відповідних cheat function:

Result Cheat Code
Toggle God modegod
Toggle debug modeipdebug
Toggle Invisibilityinvisible
Infinite ammunitioninfammo
All weaponsgiveall