Главная Новости

Webmaster Yandex – плагин для WordPress


Опубликовано: 05.09.2018

видео Webmaster Yandex – плагин для WordPress

Яндекс Турбо. Что это и как подключить на WordPress

Привет всем постоянным и новым читателям блога SEOBID.NET! Предлагаю сегодня к рассмотрению одну интересную идейку, а в чем она состоит, в двух словах не расскажешь. Поэтому начну сначала. Вы уже должны знать о таком сервисе Яндекса, как «Оригинальные тексты». Кто не знает – объясняю, как это работает. Вы написали уникальную, полезную, читабельную и интересную статью и, естественно, дорожите ею, не хотите, чтобы кто-то скопировал ее сразу после публикации на свой ГС.



Как работает защита текстов

О вопросах защиты от копирования мы поговорим позже, а сейчас речь о том, что Яндекс предлагает такую схему защиты: вы публикуете свою статью в «Оригинальных текстах», и Яндекс (предположительно) определяет вашу версию текста как оригинал, присваивая вам авторство. То есть, другие копии этой статьи будут считаться плагиатом и (тоже предположительно) в поиске учитываться не будут.


Как поставить статистику яндекс метрики на CMS Wordpress

Все это очень спорно, да и сами яндексоиды очень туманно объясняют принцип действия этого механизма защиты, но лучше уж так, чем никак. Я, например, пользуюсь этим сервисом уже месяцев 4-5, и заметил одну хорошую тенденцию – все тексты, которые я сначала публикую в «Оригинальных текстах», появляются в выдаче или сразу (через 1-5 часов), или на следующий день.


Настройка плагина Original texts Yandex WebMaster

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

А, учитывая разную скорость индексации разных сайтов, ваш контент может оказаться уже копией, а не оригиналом. Вот так. Один сайтик я оставил без внимания этого сервиса, и новые страницы с него ну ох как плохо входят в индекс. Даже не заползают – я их туда молотком вбиваю, и не всегда успешно. Не думаю, что это простое совпадение, поэтому и предлагаю подробнее изучить эту тему. А тема диспута такая – не проще ли не вбивать все новые тексты вручную, а провести автоматизацию этого процесса?

Ведь если у вас несколько (или несколько десятков) сайтов, то кроме ручной публикации, если это не парсер, вам еще нужно и отмечаться в «Оригинальных текстах». Получается двойная работа, и при определенном количестве сайтов вы просто не будете вставать из-за компьютера. Так вот, есть плагин, который любезно предоставляет нам тот же Яндекс, который на автомате «запуливает» ваши новые статьи в этот сервис. Попробовав его, я сразу поставил его на все свои сайты, но не всем остался доволен.

Оригинальные тексты в ВМ

Воровство контента успешно процветает, и я думаю, будет процветать и дальше. Но, как говорится, сила солому ломит, и мы все своими силами пытаемся бороться с этим, а копипастеры выдумывают все новые методы «тырения» чужих уникальных текстов. Плагин Webmaster Yandex довольно хорошо решает поставленные задачи, но не без огрехов. Без плагина вам придется добавлять тексты в панели вебмастера в Яндексе руками. Ка это происходит: идете в свою панель ВМ, выбираете нужный сайт, переходите в «Оригинальные тексты». Дальше – «Добавить новый текст» и после добавления – кнопка «Далее». Теперь – о самом главном.

Как работает плагин

Авторство замечательного плагина Webmaster Yandex принадлежит Sbseosoft . В чем суть работы – плагин добавляет ваши новые статьи в «Оригинальные тексты» прямо из админки. Удобно? Конечно. Вот скриншот с официальной страницы плагина:

Там же вы можете скачать плагин, или зайти на GitHub, где вы можете посмотреть, как он разрабатывался, что у него внутри, какие изменения производились, и узнать, какие изменения предполагается внести. Установка плагина подробно описана здесь .

После установки и активации идете сюда и нажимаете «Регистрация клиентских приложений».

Здесь, на этой странице, вы увидите несколько обязательных к заполнению полей. Рассмотрим, что куда писать:

Название – любое название, просто чтобы вы ориентировались, если у вас много сайтов. Описание – лучше похожее на description. Права – нажмите на надпись «Яндекс.Вебмастер». После этого ниже откроются две радиокнопки – «Добавлять сайты в сервис Яндекс.Вебмастер и получать информацию о статусе индексирования» и «Получать информацию о внешних ссылках на сайт». Если хотите включить вторую функцию, то для этого вам понадобится подтвердить свои права и пройти идентификацию, чтобы потом, после модерации приложения, получить токен. Его нужно будет, как ID и пароль, ввести в поле настроек плагина. Ссылка на иконку – укажите путь до иконки, которая будет отображаться в «Оригинальных текстах» для вашего сайта. Ссылка на приложение – адрес сайта. Callback URI – если вы укажете, что вам нужен клиент для разработки приложения (указано ниже на странице плагина), то в поле появится ссылка вида: https://oauth.yandex.ru/verification_code. Дальше нажмите «Создать».

Вас перебросит на новую страницу, на которой будет указан ваш ID и пароль. Тут же вы можете отредактировать свои данные, и не забудьте сохранить их.

Если вы хотите получать данные о внешних ссылках на свой сайт в этом приложении, то вам придется получить токен. Я этого не делал – вся информация есть в панели ВМ. Если токен нужен, придется подождать, когда приложение пройдет модерацию. Код подтверждения и токен для отладки приложения можно также получить вручную, через веб-интерфейс сервиса oauth.yandex.ru.

Но модерации все равно придется подождать. Затем введите код токена в поле настроек плагина, и сразу получите подтверждение авторизации на Яндексе.

Пишу дальше – как настроить плагин. Переходите в админпанель сайта, в настройки плагина, и там введите свой код токена (писал выше), идентификатор и пароль, который вы получили при создании приложения:

Все! Чтобы проверить, как работает плагин, зайдите на страницу создания новой записи в админке Вордпресс. Предварительно, конечно, вам нужен какой-нибудь текст, пусть даже и не уникальный – вы его сразу же можете удалить из того же вебмастера. Введите текст в поле ввода WordPress и попробуйте его отправить в Яндекс.

Проверьте теперь наличие текста в панели ВМ Яндекса. Чтобы было понятнее, посмотрите видеоролик:

А теперь о том, что мне понравилось, а что — не понравилось в плагине. Безопасность модуля обеспечена хорошо — вредоносного кода не обнаружено, да и сам Яндекс разу говорит, что личная и конфиденциальная информация никуда передается и не отправляется.

Не понравилось — плагин после одобрения модератором добавляет мета-блок на страницу редактирования постов, а я хотел, чтобы плагин работал и с произвольными типами записей. Решил исправить немного – думаю, автор не обидится, ведь исходный код плагина открыт для редактирования. Недоработки (как я считаю) которые я перечислю ниже, я публикую здесь, в этой статье.

Чтобы плагин мог работать с произвольными типами записей, нужно было изменить его вставку на страницы: код добавления кнопки не в новый мета-блок, а в тот, который есть в шаблоне, в мета-блок «Опубликовать», немного выше самой этой кнопки. Сделал это, потому что для одной кнопки создавать отдельный блок – слишком жирно. Да и по странице не нужно скроллить, чтобы добраться до кнопки – она теперь всегда на виду. Поэтому поменял: функцию adminOptions() — на такой фрагмент post_submitbox_misc_actions: public function adminOptions() { add_options_page(__('Webmaster Yandex settings', 'wm_ya'), 'Webmaster Yandex', 'manage_options', 'webmaster_yandex_options_page', array($this, 'showSettingsPage')); // on next release // add_dashboard_page('Webmaster Yandex', 'Webmaster Yandex', 'manage_options', // 'webmaster_yandex_dashboard', array($this, 'showAdminDashboard')); // add_meta_box('wm_ya_metabox_add_text', __('Send text to Yandex', 'wm_ya'), // array($this, 'metaboxSendTextsToYandexCallback'), 'post', 'advanced', // 'high'); add_action( 'post_submitbox_misc_actions', array($this, 'metaboxSendTextsToYandexCallback') ); // добавил }

Дальше пришлось также изменить код вывода контента кнопки: это функция metaboxSendTextsToYandexCallback():

public function metaboxSendTextsToYandexCallback() { $str = '<div class="misc-pub-section">'; if ($this->_websiteIdNotSet) { print "<p>" . __('Set website Id in plugin settings page', 'wm_ya') . "</p>"; return; } wp_register_script('webmaster_yandex_script', plugins_url('/../main.js', __FILE__), array('jquery')); wp_enqueue_script('webmaster_yandex_script'); wp_enqueue_script('jquery'); $postId = get_the_ID(); $postDataDb = $this->getTextInfoFromDb($postId); if (!count($postDataDb)) { $str .= "<p id='wmYaTextSendDate'>" . __("You haven't sent this text to Yandex yet", 'wm_ya') . "</p>"; $str .= "<div id='wmYaSendButton'>"; } else { $obj = $postDataDb[0]; $textSentDatetime = date('Y-m-d H:i:s', $obj->timestamp_added); $str .= "<p id='wmYaTextSendDate'><span onclick=\"jQuery('#wmYaSendButton').toggle();\" style='cursor:pointer; border-bottom:1px dashed #aaa;'>" . __('Text was sent at ', 'wm_ya') . "{$textSentDatetime}</span></p>"; $str .= "<div id='wmYaSendButton' style='display:none;'>"; } $str .= "<a class='button button-primary' onclick='jQuery(Main.wmAddText);'>" . __('Send', 'wm_ya') . "</a>"; $str .= "<div id='wmYaResultsTextSend'></div>"; $str .= "<input type='hidden' id='wmYaCurrentPostId' value='{$postId}' />"; $str .= "</div><!-- wmYaSendButton -->"; $str .= '</div><!-- misc-pub-section -->'; print $str; }

Результат – перед вами:

При удалении плагина плагин он должен удалять и все следы свой работы – таблицы БД, записи, и т.д. Но нет удаления его функции — удаляются только таблицы из БД. Но главная проблема в том, что плагин оставляет все записи, то есть, код не доработан в каком-то месте. Где именно – я нашел, это неправильное использование register_uninstall_hook(). Команда программистов WordPress для таких случаев предусмотрела использование файла unistall.php, который полностью удаляет плагин. Я применил этот файл вот такими образом: нужно удалить из файла плагина webmaster-yandex.php следующие строки: register_uninstall_hook(__FILE__, 'wm_ya_db_uninstall');

и

function wm_ya_db_uninstall() { global $wpdb; $sql = 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'wm_ya_texts'; $wpdb->query($sql); $sql = 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'wm_ya_stat_texts'; $wpdb->query($sql);

Затем в папку с плагином нужно добавить файл uninstall.php, внутри которого нужно прописать этот код:

<?php if( ! defined('WP_UNINSTALL_PLUGIN') ) exit; // проверка пройдена успешно. Начиная от сюда удаляем опции и все остальное. global $wpdb; $sql = 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'wm_ya_texts'; $wpdb->query($sql); $sql = 'DROP TABLE IF EXISTS ' . $wpdb->prefix . 'wm_ya_stat_texts'; $wpdb->query($sql); delete_option("ya_wm_db_verstion"); delete_option("webmaster_yandex_app_id"); delete_option("webmaster_yandex_app_password"); delete_option("webmaster_yandex_token"); delete_option("webmaster_yandex_token_expire"); delete_option("webmaster_yandex_website_id"); delete_option("webmaster_yandex_options_app");

Скрипт, который находится в файле main.js, получает AJAX информацию как JSON. Поэтому при ошибке, которая может появиться при отправке нового текста, мы получаем сообщение «text added». Еще одна доработка — строка

jQuery('#wmYaResultsTextSend').clear().append(contents)

не работала, поэтому пришлось изменить ее на такую:

jQuery('#wmYaResultsTextSend').html(contents)

все встало на свои места, вот так:

wmAddText : function () { var data = { postId : jQuery('#wmYaCurrentPostId').val(), action : 'wm_ya_add_text'}; jQuery('#wmYaResultsTextSend').html('<p>Отправка данных...</p>'); jQuery.getJSON(ajaxurl, data, function(response) { if (response.error === 1) { var contents = '<p style="color: red">Error: ' + response.errorText + '</p>'; jQuery('#wmYaResultsTextSend').html(contents); } else { var contents = '<p style="color: green">Text added</p>'; jQuery('#wmYaResultsTextSend').html(contents); var currentdate = new Date(); var datetime = currentdate.getFullYear() + "-" + (currentdate.getMonth() + 1) + "-" + currentdate.getDate() + " " + currentdate.getHours() + ":" + currentdate.getMinutes(); contents = 'Text added on ' + datetime; jQuery('#wmYaTextSendDate').text(contents); } }); return false; } Еще одна ошибка – если в новой статье присутствовали HTML теги, плагин показывал ошибку «incorrect xml». Чтобы ее обнаружить, я закомментировал строку ajaxAddTextToYandex(): $responseObj->error = 1; // $responseObj->errorText = __('Unable to fetch data for post Id provided', 'wm_ya'); print json_encode($responseObj); die;

А также добавил коды strip_tags() и htmlspecialchars() к новому тексту, который будет отправляться при помощи этого плагина, в функции sendTextToYandex():

public function sendTextToYandex($text) { $url = "/api/v2/hosts/" . $this->getWebsiteId() . "/original-texts/"; // добавил $text = strip_tags($text); $text = htmlspecialchars($text); $text = urlencode($text); $text = "<original-text><content>{$text}</content></original-text>"; $additionalHeaders = array('Content-Length: ' . strlen($text)); $curlOptions = array(CURLOPT_CONNECTTIMEOUT => 30, CURLOPT_POSTFIELDS => $text); $response = $this->performYandexWebmasterApiRequest($url, 'POST', $curlOptions, $additionalHeaders); $result = array(); $dom = new DOMDocument(); if ( $dom->loadXML($response['result']) ) { $yandexError = $dom->getElementsByTagName('message')->item(0) ? $dom->getElementsByTagName('message')->item(0)->nodeValue : 'unknown'; $yandexId = $dom->getElementsByTagName('id')->item(0) ? $dom->getElementsByTagName('id')->item(0)->nodeValue : 'unknown'; $yandexLink = $dom->getElementsByTagName('link')->item(0) ? $dom->getElementsByTagName('link')->item(0)->getAttribute('href') : 'unknown'; } $result = array('error' => true, 'yandexError' => $yandexError, 'yandexId' => $yandexId, 'yandexLink' => $yandexLink); if ($response['info']['http_code'] == 201) { $result['error'] = false; } return $result; }

И еще пришлось изменить логику в функции проверки if ($response[‘info’][‘http_code’] == 201).

Плагин автоматически подключается к лицевой части сайта, что мне, например, совершенно не нужно. Поэтому код в файле webmaster-yandex.php пришлось тоже подправить: require_once('Autoloader.php');spl_autoload_register(array('Autoloader', 'loadClass'));$wm = new WebmasterYandex();

На такой:

add_action( 'init', 'initWebmasterYandex' ); function initWebmasterYandex(){ // выходим если не админка if( ! defined('WP_ADMIN') ) return; // подключаем все php файлы из папки includes $includesFiles = glob( plugin_dir_path( __FILE__ )."includes/*.php" ); foreach ( $includesFiles as $file ) include_once $file; new WebmasterYandex(); }

То есть, плюс ко всему пришлось удалить файл Autoloader.php и заменить на строчки, прописанные выше. После всех проделанных изменений плагин соответствует всем моим требованиям. А вот и сам подправленный плагин Webmaster Yandex. Успехов вам!

Кстати, все эти изменения совсем не обязательны к выполнению – это просто моя личная инициатива. Возможно, на вашем хостинге плагин будет работать корректно. До встречи в следующих публикациях!

rss