Архив метки: Web

Книга: Web 3.0. Часть 1. Настоящее вчерашнего завтра

Книга: Web 3.0. Часть 1. Настоящее вчерашнего завтра

Web 3.0. Часть I. Настоящее вчерашнего завтра
Первая часть первой русскоязычной книги о Web 3.0. Не только о том, каким будет, но и о том, каким видится разным людям: от разработчиков до редпринимателей.

Кроме того, это совместный труд сразу нескольких специалистов, что делает прочтение полезным для тех, кто с технологиями и на ты, и на вы.

Web 3.0: Токенизация, или Завтрашний мир сегодня
Вторая часть книги про Web 3.0: на этот раз основа повествования — экономика, а точнее — её преломления через токены, и всё, что с этим связано (DeFi, ICO, IEO, перенос реального сектора в онлайн мир с помощью p2p и прочее). Читать

Получаем сертификаты Let’s Encrypt для домена.

Сегодня в статье разберем установку SSL сертификата от Let’s Encrypt для домена, при помощи cerbot на Ubuntu или Debian системы.

Certbot – это клиент протокола ACME предназначенный для автоматического управления SSL-сертификатами от Let’s Encrypt, он позволяет полностью автоматизировать процесс получения и продления сертификата, а при использовании соответствующих плагинов даже может автоматически конфигурировать веб-сервер или иное, использующее сертификат приложение.

Дальнейшие инструкции будут предназначены для операционных систем Debian и Ubuntu, но многое будет справедливо и для иных дистрибутивов Linux. Читать

[РЕШЕНО] ошибка “data-vocabulary.org” в WordPress на Linux

Сегодня в статье разберемся как можно исправить ошибку “data-vocabulary.org” в WordPress. Google анонсировали, отключение поддержки словаря data-vocabulary. Из-за этого многие в консоли получают ошибки, связанные с этим. Пока что – это предупреждения, чтобы успеть с этим что-то сделать. Но в будущем может оказаться и серьезной ошибкой для поисковых роботов от Google. Поэтому давайте разберемся как исправить ошибку “data-vocabulary.org” в WordPress.




Для начала нам необходимо найти файлы где присутствует надпись разметки data-vocabulary.org.




Для этого открываем терминал и набираем следующий текст:




grep -R --color data-vocabulary.org /var/www/




Данная команда рекурсивно пробежится по всем категориям и найдет в файлах нашу заветную фразу data-vocabulary.org. Вот пример вывода:




/var/www/public_html/wp-content/mythemes/template-parts/content-single.php:<div class="breadcrumb" xmlns:v="http://rdf.data-vocabulary.org/#"><?php mytheme_breadcrumb(); ?></div> 




У вас вывод конечно же будет отличаться, но суть остается та же. Из вывода видно какой файл необходимо открыть на редактирование. В файле необходимо произвести замену data-vocabulary.org на schema.org




Меняем микроразметку со словаря data-vocabulary на schema.org




Вот парочка примеров:




Новый вариант разметки со словарём schema.org

<?php mytheme_set_post_views( get_the_ID() ); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <div class="breadcrumb" xmlns:v="http://schema.org/BreadcrumbList"><?php mytheme_breadcrumb(); ?></div>
        <header class="entry-header">
                <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>
...




или вот.




Старый вариант разметки по data-vocabulary.org

<div class="breadcrumbs">
  <span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
    <a href="https://obu4alka.ru/" itemprop="url">
      <span itemprop="title">Obu4alka.ru</span>
    </a> ›
    <span itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
      <a href="https://obu4alka.ru/home" itemprop="url">
        <span itemprop="title">Главная</span>
      </a> ›
      <span itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
        <a href="https://obu4alka.ru/home/seo/" itemprop="url">
          <span itemprop="title">SEO</span>
        </a>
      </span>
    </span>
  </span>
</div>




Новый вариант разметки со словарём schema.org

<div class="breadcrumbs">
  <span itemscope itemtype="http://schema.org/BreadcrumbList">
    <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
      <a href="https://obu4alka.ru/" itemprop="item">
        <span itemprop="name">Obu4alka.ru</span>
      </a>
      <meta itemprop="position" content="1" />
    </span> ›
    <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
      <a href="https://obu4alka.ru/home" itemprop="item">
        <span itemprop="name">Главная</span>
      </a>
      <meta itemprop="position" content="2" />
    </span> ›
    <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
      <a href="https://obu4alka.ru/home/seo/" itemprop="item">
        <span itemprop="name">SEO</span>
      </a>
      <meta itemprop="position" content="3" />
    </span>
  </span>
</div>



[endtxt]




RSS



Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.


2020-07-07T07:00:00
WEB

Как можно отобразить дату последнего изменения поста на WordPress?

Сегодня в статье разберемся как можно отобразить дату последнего изменения поста на CMS WordPress.




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




Существуют много различных способов как изменить дату публикации вордпресс, например:




  • через SQL скрипт;
  • вручную через phpMyAdmin с выгрузкой дат из базы;
  • с использованием TextKit (программа позволяет обновлять и редактировать большие базы данных);
  • различные скрипты, которые располагаются в корне сайта; и работают при запуске из строки браузера;
  • в ручном режиме из административной части сайта;
  • автоматическое обновление даты публикации в WordPress.




Для чего нужно показывать дату последнего обновления?




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




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




Давайте посмотрим, как можно отобразить дату последнего изменения поста на WordPress.




Дата последнего изменения поста на WordPress




Чтобы выводить дату последнего изменения поста перед началом текста, скопируйте и добавьте этот код в ваш файл functions.php текущей темы оформления в самый конец файла:




<?php
function wpb_last_updated_date( $content ) {
$u_time = get_the_time('U'); 
$u_modified_time = get_the_modified_time('U'); 
if ($u_modified_time >= $u_time + 86400) { 
$updated_date = get_the_modified_time('d.m.Y');
$updated_time = get_the_modified_time('h:i'); 
$custom_content .= '<p class="last-updated">Last updated on '. $updated_date . ' at '. $updated_time .'</p>';  
} 
$custom_content .= $content;
return $custom_content;
}
add_filter( 'the_content', 'wpb_last_updated_date' );
?>




Этот код выполняет проверку и сравнивает 2 даты: дату публикации и дату последнего изменения. Если эти даты не совпадают, тогда код выводит дату последнего изменения перед началом контента записи.




Вот еще один пример для отображения даты изменения поста. Данный код необходимо вставить в файл single.php или его аналоги, например content-single.php.




<div>Последнее изменение поста: <?php the_modified_date('F j Y года'); ?></div><br />




Место в ставки подбираете сами в зависимости от вашей темы. В моем случае я вставил перед функцией




<?php the_content(); ?>




Также можете изменить дату публикации вашего поста еще одним способом , для этого необходимо вставить вот такой код в файл function.php вашей темы.




<?php
function reset_post_date_wpse_121565($data,$postarr) {
  // var_dump($data,$postarr); die; // debug
  $data['post_date'] = $data['post_modified'];
  $data['post_date_gmt'] = $data['post_modified_gmt'];
  return $data;
}
add_filter('wp_insert_post_data','reset_post_date_wpse_121565',99,2);
?>




Примечание: Рекомендую запомнить, то что при каждом нажатии на кнопку «Обновить» в записи, будет обновляться и дата публикации вашего поста.



[endtxt]




RSS



Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.


2020-05-01T12:09:11
WEB

Защищаем WordPress от спам-ботов и авто-ботов.

Рассмотрим скрипт, который позволяет «вычислить» как спам-ботов, так и авто-ботов и закрывать им доступ на весь сайт.




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




Для начала создайте папку bad_bot в корне сайта. В папке bad_bot создайте четыре файла:




1) black_list.dat — изначально пустой файл, в который будет помещаться информация о ботах, «попавших в ловушку»;




2) pixel.gif — прозрачный файл размером в 1 пиксель. Простой человек его не видит, но только не бот. Скачать данный файл Вы можете по ссылке;




3) black_list.php — страничка, со скриптом
перейдя на которую бот будет «в ловушке», а вся необходимая информация о
боте будет помещена в файл black_list.dat;




4) index.php — скрипт, проверяющий есть ли данный IP в списке ботов. Если есть, то доступ для данного IP блокируется.




Теперь поместите в файл black_list.php следующий код:




<?php
echo '<html><body><p>Как Вы сюда попали?</p>';
echo '<p><a href="https://Ваш_домен.ru/">вернуться на главную страницу</a></p>';
if(phpversion() >= "4.2.0") {extract($_SERVER);}
$bad_bot = 0;
/* Смотрим, имеется ли такой же IP в базе */
$file_name = "black_list.dat";
$fp = fopen($file_name, "r") or die ("Ошибка, файл black_list.dat не найден <br>");
while ($line = fgets($fp, 255)) {
$u = explode(" ", $line);
if (preg_match("/".$u[0]."/", $REMOTE_ADDR)) {$bad_bot++;}
}
fclose($fp);
if ($bad_bot == 0) {
$tmestamp = time();
$datum = date("H:i:s d.m.Y",$tmestamp);
/* отсылаем отчет на email */
$to = "ваш@email.ru";
$subject = "Заголовок сообщения";
$msg = "Пришёл с $REQUEST_URI $datum IP: $REMOTE_ADDR, User-агент $HTTP_USER_AGENT";
mail($to, $subject, $msg);
/* Если отсылать отчет на email не надо, то 4 строки выше можно удалить*/

/* Добавляем запись в файл black_list.dat */
$fp = fopen($file_name,'a+');
fwrite($fp,"$REMOTE_ADDR $datum $REQUEST_URI $HTTP_REFERER $HTTP_USER_AGENTrn");
fclose($fp);
}
echo '</body></html>';
?>




Далее в файл index.php поместите следующий код:




<?php
if(phpversion() >= "4.2.0") {extract($_SERVER);}
$bad_bot = 0;
/* перебираем все записи в файле black_list.dat */
$file_name = "bad_bot/black_list.dat";
$fp = fopen($file_name, "r") or die ("Ошибка, файл black_list.dat не найден<br>несуществующий путь<br>");
while ($line = fgets($fp, 255)) {
$data = explode(" ", $line);
if (preg_match("/".$data[0]."/", $REMOTE_ADDR)) {$bad_bot++;}
}
fclose($fp);
if ($bad_bot > 0) { /* это бот и мы запрещаем ему вход на сайт */
sleep(3);            /* задержка загрузки странички */
echo '<html><head>';
echo '<title>Сайт временно недоступен.</title>';
echo '</head><body><br>';
echo '<center><h1>Сайт временно недоступен!</h1></center><br>';
echo '<p><center>Приносим свои извинения ...</center></p><br>';
echo '</body></html>';
exit;
}
?>




Обязательно в файле robots.txt запрещаем индексацию данной папки путем добавления строчки:




disallow: /bad_bot/




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




<a href="https://Baш_домен.ru/bad_bot/black_list.php">
<img src="https://Baш_домен.ru/bad_bot/pixel.gif" border="0" alt="" width="1" height="1">
</a>




Перед выводом каждой странички необходимо постоянно проверять содержимое файла black_list.dat, чтобы отсеивать «попавшихся» ботов. Для этого просто добавьте на все странички следующий код:




<?php include("https://Baш_домен.ru/bad_bot/index.php"); ?>




Файлу blacklist.dat необходимо дать на сервере права доступа для чтения и записи – 666.




Использовать данный скрипт необходимо с осторожностью,
т.к. он может заблокировать и некоторых «хороших» ботов. Например,
ботов, которые создают карту Вашего сайта.



[endtxt]



2019-09-16T00:55:15
WEB

Список проверенных пинг сервисов WordPress 2019

Составил и отсортировал повторяющиеся пинг сервисы для блогов WordPress в 2019 году. Копируйте и пользуйтесь моим списком пинг сервисов чтобы ускорить индексацию.




Пинг сервисы WordPress 2019




Чтобы ускорить индексацию сайта поисковым системам нужно каким-то образом сообщить про обновление. Делают это через пинг сервисы. Раньше я использовал более 200 пинг сервисов, но сегодня в 2019 году я оставил только рабочие и не повторяющиеся, который занес в этот список.




http://ping.blogs.yandex.ru/RPC2
http://api.my.yahoo.co.jp/RPC2 http://audiorpc.weblogs.com/RPC2 
http://blo.gs/ping.php http://blog.goo.ne.jp/XMLRPC 
http://blogpeople.net/ping 
http://blogpeople.net/servlet/weblogUpdates 
http://blogsearch.google.ae/ping/RPC2 
http://blogsearch.google.at/ping/RPC2 
http://blogsearch.google.be/ping/RPC2 
http://blogsearch.google.bg/ping/RPC2 
http://blogsearch.google.ca/ping/RPC2 
http://blogsearch.google.ch/ping/RPC2 
http://blogsearch.google.cl/ping/RPC2 
http://blogsearch.google.co.cr/ping/RPC2 
http://blogsearch.google.co.hu/ping/RPC2 
http://blogsearch.google.co.id/ping/RPC2 
http://blogsearch.google.co.il/ping/RPC2 
http://blogsearch.google.co.in/ping/RPC2 
http://blogsearch.google.co.jp/ping/RPC2 
http://blogsearch.google.co.ma/ping/RPC2 
http://blogsearch.google.co.nz/ping/RPC2 
http://blogsearch.google.co.th/ping/RPC2 
http://blogsearch.google.co.uk/ping/RPC2 
http://blogsearch.google.co.ve/ping/RPC2 
http://blogsearch.google.co.za/ping/RPC2 
http://blogsearch.google.com.ar/ping/RPC2 
http://blogsearch.google.com.au/ping/RPC2 
http://blogsearch.google.com.br/ping/RPC2 
http://blogsearch.google.com.co/ping/RPC2 
http://blogsearch.google.com.do/ping/RPC2 
http://blogsearch.google.com.mx/ping/RPC2 
http://blogsearch.google.com.my/ping/RPC2 
http://blogsearch.google.com.pe/ping/RPC2 
http://blogsearch.google.com.sa/ping/RPC2 
http://blogsearch.google.com.sg/ping/RPC2 
http://blogsearch.google.com.tr/ping/RPC2 
http://blogsearch.google.com.tw/ping/RPC2 
http://blogsearch.google.com.ua/ping/RPC2 
http://blogsearch.google.com.uy/ping/RPC2 
http://blogsearch.google.com.vn/ping/RPC2 
http://blogsearch.google.com/ping/RPC2 
http://blogsearch.google.ru/ping/RPC2 
http://blogshares.com/rpc.php 
http://geourl.org/ping 
http://godesigngroup.com/blog/feed/ 
http://ipings.com http://lasermemory.com/lsrpc
http://mod-pubsub.org/kn_apps/blogchatt 
http://mod-pubsub.org/kn_apps/blogchatter/ping.php 
http://mod-pubsub.org/ping.php 
http://ping.amagle.com 
http://ping.bitacoras.com 
http://ping.bloggers.jp/rpc/ 
http://ping.blogs.yandex.ru/RPC2 
http://ping.fc2.com http://ping.fc2.com/ 
http://ping.feedburner.com 
http://ping.rootblog.com/rpc.php 
http://pinger.onejavastreet.com 
http://rpc.bloggerei.de/ping/ 
http://rpc.icerocket.com:10080/ 
http://rpc.pingomatic.com/ 
http://rpc.twingly.com/ 
http://rpc.weblogs.com/RPC2 
http://services.newsgator.com/ngws/xmlrpcping.aspx 
http://wasalive.com/ping/ 
http://www.blogpeople.net/servlet/weblogUpdates 
http://www.blogshares.com/rpc.php 
http://www.godesigngroup.com 
http://www.lasermemory.com/lsrpc 
http://www.mod-pubsub.org/kn_apps/blogchatter/ping.php 
http://www.ping.blo.gs/ 
http://www.pingerati.net 
http://www.pingmyblog.com 
http://www.rpc.technorati.jp/rpc/ping 
http://www.wasalive.com/ping/ 
http://www.xmlrpc.bloggernetz.de/RPC2 
http://xmlrpc.bloggernetz.de/RPC2 http://xping.pubsub.com/ping/






2019-08-12T17:34:36
WEB