Отключить комментарии в WordPress

Иногда возникают ситуации, когда необходимо сразу отключить коментарии для всех записей в WordPress. Панель управления WordPress позволяет отключить или включить комментарии только для одной записи. Таким образом, чтобы отключить комментарии на большом сайте может потребоваться достаточно много времиени.

Как вариант, можно быстро отключить комментарии в WordPress используя MySQL запрос:

use wordpressdb;
UPDATE wp_posts SET comment_status='closed' WHERE post_status = 'publish' AND post_type = 'post';

Чтобы включить комментарии для всех записей в WordPress, выполните запрос:

UPDATE wp_posts SET comment_status='open' WHERE post_status = 'publish' AND post_type = 'post';

Удалить историю Chrome

В процессе синхронизации данных Chrome использует имя компьютера в качестве названия устройства. Если изменить имя компьютера или переустановить систему, браузер расценивает компьютер как два обсолютно разных устройства. Проблема состоит в том, что после подобных манипуляций история Chrome будет разделена на два различных устройства.

После изменения имени компьютера в Chrome не возможно выпорлнить очистку истории просмотров, которая была собрана до переустановки системы. Когда вы удаляете историю просмотра, в Chrome продолжает отображаться история других устройств.

Единственный способом удалить историю других устройств в Chrome — полное удаление всех синхронизированных данных Chrome в учетной записи Google. Зайдите в настройки синхронизации Chrome, затем нажмите на кнопку ‘Сброс синхронизации’.

В процессе будут удалены данные только с аккаунта Google, вашим закладкам ничего не угрожает. Для восстановления синхронизации необходимо повторно привязать Chrome к вашей учетной записи Google.

Выпадающее меню в WordPress

В мобильной версии темы WordPress Twenty Fifteen сайдбар используется в виде выпадающего меню, которое отображается при нажатии на кнопку. Чтобы показать или скрыть меню используется JavaScript, который в свою очередь использует библиотеку jQuery.

Как я уже писал раньше, я поставил себе цель полностью выпилить jQuery из стандартной темы оформления Twenty Fifteen. Сначала перенес на CSS спойлер, который ранее работал на JavaScript и jQuery. И вот сейчас руки дошли до выпадающего меню в WordPress.

Для начала нужно полностью отключить загрузку jQuery, добавьте в файл в functions.php:

function wpdocs_dequeue_script() {
    wp_dequeue_style('jquery');
    wp_deregister_script('jquery');
}
add_action( 'wp_print_scripts', 'wpdocs_dequeue_script' );

Чтобы показать или скрыть выпадающее меню при нажатии на кнопку, добавьте JavaScript ниже в файл footer.php:

<script type="text/javascript">
    var dropdownButton = document.getElementById("dropdown"),
    dropdownDiv = document.getElementById("secondary");

    dropdownButton.addEventListener("click", function () {
        dropdownButton.classList.toggle("toggled-on");
        dropdownDiv.classList.toggle("toggled-on");

    if (dropdownButton.getAttribute("aria-expanded") == 'false') {
        dropdownButton.setAttribute("aria-expanded", "true");
        dropdownDiv.setAttribute("aria-expanded", "true");
    }
    else {
        dropdownButton.setAttribute("aria-expanded", "false");
        dropdownDiv.setAttribute("aria-expanded", "false");
    }
});
</script>

Преимущества данного скрипта — нет необходимости подгружать jQuery. К недостаткам можно отнести то, что данный скрипт не работает в Opera Mini по причине отсутствия поддержки classList. Возможно, в будущем перепишу выпадающее меню на CSS, но сейчас не хочу заморачиваться.

JavaScript класс элемента

В этой записи я расскажу как с помощью JavaScript добавить или изменить атрибут class для элементов страницы. Часто этот метод используют для создания динамических элементов страницы. Чтобы в JavaScrip добавить, удалить, переключить или проверить класс элемента используют методы, которые содержит свойство classList:

  • classList.add
  • classList.remove
  • classList.toggle
  • classList.contains
  • classList.length
  • classList.item

Добавить класс

classList.add — добавить класс элемента.

Синтаксис:

element.classList.add(name);
  • name — имя класса.

В примере я использую метод classList.add чтобы добавить класс style для для элемента <div>:

<div id="div1">Hello World</div>

<script>
var div1 = document.getElementById("div1");
div1.classList.add("style");
</script>

Удалить класс

classList.remove — удалить класс элемента.

Синтаксис:

element.classList.remove(name);
  • name — имя класса.

В примере я использую метод classList.remove чтобы удалить класс style для для элемента <div>:

<div id="div1" class="style">Hello World</div>

<script>
var div1 = document.getElementById("div1");
div1.classList.remove("style");
</script>

Переключить класс

classList.toggle — добавить имя класса, если его нет, или удалить, если он есть.

Синтаксис:

element.classList.toggle(name);
  • name — имя класса.

В примере я использую метод classList.toggle чтобы добавить класс style для для элемента <div>:

<div id="div1">Hello World</div>

<script>
var div1 = document.getElementById("div1");
div1.classList.toggle("style");
</script>

Или удалить класс style, если он есть:

<div id="div1" class="style">Hello World</div>

<script>
var div1 = document.getElementById("div1");
div1.classList.toggle("style");
</script>

Проверить наличие класса

classList.contains — возвращает логическое значение, указывающее, имеет ли элемент указанный класс или нет.

Синтаксис:

element.classList.contains(name);
  • name — имя класса.

В примере я использую метод classList.contains чтобы добавить класс style для для элемента <div>:

<div id="div1" class="style">Hello World</div>

<script>
var div1 = document.getElementById("div1");
alert(div1.classList.contains("style"));
</script>

Количество классов

classList.length — возвращает количество классов в элементе.

Синтаксис:

element.classList.length;

В примере я использую метод classList.length чтобы получить количество классов для для элемента <div>:

<div id="div1" class="style1 style2">Hello World</div>

<script>
var div1 = document.getElementById("div1");
alert(div1.classList.length);
</script>

Узнать имя класса

classList.item — возвращает имя класса по его порядковому номеру.

Синтаксис:

element.classList.item(number);
  • number — порядковый номер класса.

В примере я использую метод classList.item чтобы получить имя класса по его порядковому:

<div id="div1" class="style1 style2">Hello World</div>

<script>
var div1 = document.getElementById("div1");
alert(div1.classList.item(0));
</script>

JavaScript атрибут элемента

В данной записи я расскажу как с помощью JavaScript добавить, удалить, изменить и получить значение атрибута элемента. В JavaScript для работы с атрибутами существуют следующие функции:

  • setAttribute
  • getAttribute
  • hasAttribute
  • removeAttribute

Добавить или изменить атрибут

setAttribute — функция добавляет новый атрибут или изменяет значение существующего атрибута по указанному элементу.

Синтаксис функции:

element.setAttribute(name, value);
  • name — задает имя атрибута.
  • value — указывает новое значение атрибута.

В примере я использую функцию setAttribute чтобы добавить атрибут disabled для элемента <button>:

<button id="btn">Hello World</button>

<script>
var b = document.querySelector("#btn");
b.setAttribute("disabled", "disabled");
</script>

Получить значение атрибута

getAttribute — функция вернет значение указанного атрибута элемента.

Синтаксис функции:

var attribute = element.getAttribute(attributeName);
  • attribute — строка содержащая значение атрибута.
  • attributeName — имя атрибута, значение которого вы хотите получить.

В примере я использую функцию getAttribute чтобы получить значение атрибута элемента <div>:

<div id="div1" align="center">Hello World</div>

<script>
var div1 = document.getElementById("div1");
var align = div1.getAttribute("align");

alert(align);
</script>

Проверить наличие атрибута

hasAttribute — метод возвращает логическое значение, указывающее, имеет ли элемент указанный атрибут или нет.

Синтаксис функции:

var result = element.hasAttribute(attName);
  • result — значение true или false.
  • AttName — задает имя атрибута.

В примере я использую функцию hasAttribute чтобы проверить наличие атрибута align="center" для элемента <div>:

<div id="div1" align="center">Hello World</div>

<script>
var d = document.getElementById("div1");

if (d.hasAttribute("align")) {
    alert("align center");
}
</script>

Удалить атрибут

removeAttribute — удаляет атрибут из указанного элемента.

Синтаксис функции:

element.removeAttribute(attrName);
  • attrName — строка с именем атрибута, который нужно удалить.

В примере я использую функцию removeAttribute чтобы удалить атрибут align="center" для элемента <div>:

<div id="div1" align="center">Hello World</div>

<script>
document.getElementById("div1").removeAttribute("align");
</script>

Cпойлер в WordPress на CSS

В этой записи я расскажу как сделать спойлер в WordPress на чистом HTML и CSS. Предпосылкой для написания этой статьи стало желание полностью отказаться от использования библиотеки jQuery, которая по умолчанию используется в стандартной теме WordPress Twenty Fifteen.

Стандартная тема WordPress Twenty Fifteen использует библиотеку jQuery для отображения блока сайдбара в мобильной версии сайта. Функционал не настолько сложный, чтобы ради него подключать jQuery. Поэтому, было принято решение полностью выпилить jQuery из содержимого шаблона.

Начать я решил с самого простого. Ранее спойлер на моем блоге работал на JavaScript, который требовал для своей работы наличие подключенной библиотеки jQuery. Представляю вашему вниманию небольшую функцию, которая добавляет возможность использовать спойлер в WordPress.

Текст спойлера

Для установки откройте файл functions.php вашей темы и добавьте в него следующий код:

function showhide_shortcode ($atts, $content = null) {
    $attributes = shortcode_atts (array('text' => 'Спойлер'), $atts );

    $output = '<span class="spoiler"> 
        <label for="spoiler">' . $attributes['text'] . '</label>
        <input type="checkbox" id="spoiler">';
    $output .= '<div class="spoiler_text">'. do_shortcode( $content ) .'</div>
        </span>';

return $output;
}
add_shortcode ('spoiler', 'showhide_shortcode');

Чтобы добавить спойлер в WordPress используйте шорткод [spоiler] для области, которую хотите скрыть. Через параметр text можно изменить текст, который будет отображаться в заголовке спойлера.

[spоiler text="Заголовок спойлера"]Текст[/spоiler]

За отображение данных под спойлером добавьте в файле style.css:

.spoiler label {
    color: #0060a0;
    border-bottom: 1px dashed rgba(0,96,160,.2);
    cursor:pointer;
}
.spoiler input {
    display: none;
}
.spoiler_text {
    display: none;
}
.spoiler input[type=checkbox]:checked + .spoiler_text {
    display: block;
}

Теперь, вам остается только подправить стили под дизайн вашего сайта.

WordPress версия стилей и скриптов

Достаточно часто приходится вносить изменения в дизайн сайта. Если не обновить файлы стилей в кэше браузера, можно столкнуться с проблемой некорректного отображения сайта. Если администратор сайта легко решит проблему нажатием славишь Alt+F5. То как быть с другими посетителями сайта, которые понятия не имеют, что сегодня администратор неожиданно решил обновить дизайн.

Причина данной проблемы связана с заголовком Cache-Control, который веб-сервер передает вашему браузеру во время загрузки файла:

Cache-Control: max-age=86400

Директива указывает браузеру хранить копию файлов в кэше в течение суток. Таким образом, до завтрашнего дня посетитель будет любоваться съехавшей версткой. Вы можете уменьшить значение директивы max-age, хотя сути проблемы это не решает.

Полный отказ от кэширования:

Cache-Control: no-cache

Может показаться, что это полностью решает проблему. Но этот вариант имеет существенный достаток: мы увеличим нагрузку на сервер и время загрузки сайта.

Во время передачи веб-сервер может автоматически посылать заголовок Last-Modified. Но это не дает гарантии, что браузер заинтересуется этим файлом.

Единственным правильным выходом из данной ситуации будет указывать версию для CSS и JS файлов:

<link rel="stylesheet" href="https://codebeer.ru/style.css?ver=4.4" type="text/css" />

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

function wpdocs_dequeue_script() {
    wp_register_script('jquery', get_template_directory_uri() . '/jquery.min.js', false, hash_file('crc32', get_stylesheet_directory() . '/style.css'), true);
    wp_enqueue_script('jquery');
}

Функция, которая задает версию по умолчанию для всех подключаемых файлов:

function my_wp_default_styles($styles) {
    $styles->default_version = hash_file('crc32', get_stylesheet_directory() . '/style.css');
}
add_action("wp_default_styles", "my_wp_default_styles");

Как вариант, вместо хэша можно использовать дату изменения файла:

function my_wp_default_styles($styles) {
    $styles->default_version = filemtime(get_stylesheet_directory() . '/style.css' );
}
add_action("wp_default_styles", "my_wp_default_styles");

Определить код символа

В данной записи я расскажу как определить код символа с помощью обычного текстового редактора Microsoft Word. Получить код символа может понадобится в процессе работы с CSS, для того чтобы указать свойство content. В качестве значения данного свойства используются коды символов Unicode.

Определить код символа в Word

Для примера попробуем найти код символа код символа точка. Сначала откроем чистый документ Word и добавим в него символ точки ., теперь чтобы получить код символа Unicode необходимо выделить один символ и затем нажать сочетание клавиш Alt+X.

Для примера определим код символа точка. Для начала откроем чистый документ Word и добавим в него символ точки ., теперь чтобы получить код символа Unicode необходимо выделить один символ и затем нажать сочетание клавиш Alt+X.

Код символа точка в формате Unicode 002E. Чтобы указать свойство content в CSS, необходимо просто добавить обратный слэш:

.dropdown-toggle:after {
	content: "\002E";
}

Таблица кодов символов

Как вариант можно определить код символа с помощью таблицы кодов символов. Таблица содержит все коды символов Unicode и HTML-код. Потребуется много времени чтобы найти код символа в таблице, но зато таблица кодов символов хорошо подходит если вы еще не определились какой именно символ вам нужен.

Настроить редирект в WordPress

Для перенаправления в WordPress можно использовать встроенный в ядро редирект. Настроить редирект в WordPress с помощью функций: wp_redirect() и wp_safe_redirect(). Разница между этими функциями состоит в том, что wp_safe_redirect() дополнительно проверяет адрес в списке разрешенных хостов.

Пример как настроить 301 редирект в WordPress:

function redirect_to_home($query) {
    if(is_author()) {
         wp_redirect(home_url(), 301);
         exit;
     }
}
add_action('parse_query', 'redirect_to_home');

При переходе по адресу https://codebeer.ru/author/admin, WordPress выполнит редирект на главную страницу сайта.

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

Оснастка Active Directory

Дата: 17.12.2015Метки:

Для работы с оснасткой Active Directory в системах Windows 7/8/10, вам понадобится предварительно установить набор утилит Microsoft Remote Server Administration Tools (RSAT) или Средства удаленного администрирования сервера в русской локализации Windows. RSAT работает как клиент Active Directory и позволяет управлять Windows Server через специальную оснастку.

Для установки оснастки Active Directory в операционных системах Windows 7/8/10, необходимо предварительно скачать и установить RSAT. Для этого перейдите по одной из ссылок ниже:

  • RSAT для Windows 7
  • RSAT для Windows 8
  • RSAT для Windows 8.1
  • RSAT для Windows 10

После установки RSAT, большинство функций управления отключены. Для запуска оснастки Active Directory активируйте компонент «AD DS and AD LDS Tools» в панели управления:

"Control Panel" - "Programs and Features" - "Turn Windows features on or off"

Перейдите в раздел:

"Remote Server Administration Tools" - "Role Administration Tools"

И выберите «AD DS and AD LDS Tools» чтобы установить оснастку Active Directory.