10 хаков для WordPress
1. Как выводить рекламу только для посетителей с поисковых сайтов
С помощью данного кода ваш сайт будет показывать вашу рекламу только посетителям, пришедшим с поисковых сайтов. Причиной применения такого решения может стать информация о том, что большинство нажатий на рекламу совершают посетители с поисковых ресурсов, которые занимаются поиском информации. Таким образом, можно избежать попадания под действие "smart-pricng", если вы пользуетесь Google AdSense.
Копируем ниже приведенную функцию в файл functions.php
в папке вашей темы:
function scratch99_fromasearchengine(){ $ref = $_SERVER['HTTP_REFERER']; $SE = array('/search?', 'yandex.ru', 'images.google.', 'web.info.com', 'search.', 'del.icio.us/search', 'soso.com', '/search/', '.yahoo.'); foreach ($SE as $source) { if (strpos($ref,$source)!==false) return true; } return false; }
В массиве $SE
указываем все поисковые сервисы, для посетителей с которых будет выводиться реклама. В примере установлены Yandex.ru , Google, Web.Info.com, Del.icio.us, Soso.com, и Yahoo.
Следующий код используется там, где нужно вставить рекламный блок:
if (function_exists('scratch99_fromasearchengine')) { if (scratch99_fromasearchengine()) { ВСТАВЬТЕ КОД РЕКЛАМЫ СЮДА } }
Остается только скопировать код рекламного блока в место обозначенное ВСТАВЬТЕ КОД РЕКЛАМНОГО БЛОКА СЮДА.
2. Как вывести дату в формате "Времени прошло"
Многие сайты социальных сетей, такие как Twitter, Reddit, Digg используют формат дат, который называется “Времени прошло”. То есть, если вы разместили заметку 1 Февраля, а сегодня 10 Февраля, то дата будет выглядеть как "Прошло 9 дней". Для организации на своем сайте дат в таком формате добавим следующую функцию к файлу темы functions.php
.
function timeAgo($timestamp, $granularity=2, $format='Y-m-d H:i:s'){ $difference = time() - $timestamp; if($difference < 0) return '0 секунд прошло'; elseif($difference < 864000){ $periods = array('недель' => 604800,'дней' => 86400,'часов' => 3600,'минут' => 60,'секунд' => 1); $output = ''; foreach($periods as $key => $value){ if($difference >= $value){ $time = round($difference / $value); $difference %= $value; $output .= ($output ? ' ' : '').$time.' '; $output .= (($time > 1 && $key == 'дней') ? $key.'секунд' : $key); $granularity--; } if($granularity == 0) break; } return ($output ? $output : '0 секунд').' прошло'; } else return date($format, $timestamp); }
Теперь можно использовать ее в теме. Нужно помещать следующий код везде в главном цикле, где требуется выводить дату в формате "Времени прошло" для заметки.
$time = timeAgo($dateRef);
3. Выводим увеличивающийся номер для каждой заметки
Снабжение каждой заметки сквозным увеличивающимся номером может быть интересным решением дизайна проекта. Добавляем в файл functions.php
темы следующий код:
function updateNumbers() { global $wpdb; $querystr = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' "; $pageposts = $wpdb->get_results($querystr, OBJECT); $counts = 0 ; if ($pageposts): foreach ($pageposts as $post): setup_postdata($post); $counts++; add_post_meta($post->ID, 'incr_number', $counts, true); update_post_meta($post->ID, 'incr_number', $counts); endforeach; endif; } add_action ( 'publish_post', 'updateNumbers' ); add_action ( 'deleted_post', 'updateNumbers' ); add_action ( 'edit_post', 'updateNumbers' );
Теперь надо скопировать следующий код в основной цикл в любой файл, который будет выводить номер заметки (index.php, single.php, и так далее).
<?php echo get_post_meta($post->ID,'incr_number',true); ?>
4. Разные стили комментариев в зависимости от роли пользователя
Когда ваш блог получает большое количество комментариев, может быть чрезвычайно полезно разделять комментарии от разных пользователей с помощью разных стилей. Например, комментарии администраторов имеют зеленый фон, а комментарии простых подписчиков - серый.
Сначала нужно заменить текущий цикл комментариев в файле comments.php
следующим кодом:
<ol id="commentlist"> <?php foreach ($comments as $comment) : ?> <?php // Дополнительный код для получения роли комментатора $user_id = $comment->user_id; $role = ( isset( $roles[$user_id] ) ? $roles[$user_id] : '' ); ?> <li class="<?php echo $role; ?>"> <p>By <?php comment_author_link() ?> - <?php comment_date() ?></p> <?php comment_text() ?> </li> <?php endforeach; ?> </ol>
Теперь подготовим стили для каждой роли, которая имеет права на комментирование заметок вашего блога. В нашем уроке мы установим стили только для незарегистрированных пользователей или подписчиков, редакторов и администраторов. Скопируйте следующий код в файл style.css
:
#commentlist li { border:2px solid white; } /* незарегистрированный пользователь или подписчик */ #commentlist li.administrator { border:2px solid red } /* администратор */ #commentlist li.editor { border:2px solid blue } /* редактор */
5. Добавляем форму для входа в любом месте темы
По умолчанию вы можете добавить виджет “Meta” на ваш блог WordPress на любую боковую панель. С помощью данного виджета вы можете регистрироваться и выходить из системы. Но данный виджет отображается в качестве ссылки на панели. Но если вам нужно организовать вход пользователей непосредственно из формы на вашем блоге без нажиманий на ссылки, то нужно скопировать ниже приведенный код в то место, где нужно отображать форму входа на сайт (XXX - адрес вашего проекта)
<?php if (!(current_user_can('level_0'))){ ?> <h2>Войти</h2> <form action="<?php echo get_option('home'); ?>/wp-login.php" method="post"> <input type="text" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?>" size="20" /> <input type="password" name="pwd" id="pwd" size="20" /> <input type="submit" name="submit" value="Войти" class="button" /> <p> <label for="rememberme"><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Запомнить меня</label> <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" /> </p> </form> <a href="/<?php echo get_option('home'); ?>/wp-login.php?action=lostpassword"> Восстановить пароль</a> <?php } else { ?> <h2>Выйти</h2> <a href="/<?php echo wp_logout_url(urlencode($_SERVER['REQUEST_URI'])); ?>">Выйти</a><br /> <a href="http://XXX/wp-admin/">Панель инструментов</a> <?php } ?>
6. Выводим записи по теме без использования плагина
Существует достаточно большое количество плагинов для вывода записей по теме ниже заметки. Но данный код может выполнять такую же операцию без подключения дополнительных плагинов. Вы сможете размещать записи по теме где угодно и определять, сколько их нужно выводить. Скопируйте ниже приведенный код туда, где нужно вывести записи по теме. Обычно используется файл single.php
.
<?php //для использования в цикле, выводит 5 записей по теме первого тега текущей заметки $backup = $post; // сохраняем текущий объект $tags = wp_get_post_tags($post->ID); $tagIDs = array(); if ($tags) { $tagcount = count($tags); for ($i = 0; $i < $tagcount; $i++) { $tagIDs[$i] = $tags[$i]->term_id; } $args=array( 'tag__in' => $tagIDs, 'post__not_in' => array($post->ID), 'showposts'=>5, 'caller_get_posts'=>1 ); $my_query = new WP_Query($args); if( $my_query->have_posts() ) { while ($my_query->have_posts()) : $my_query->the_post(); ?> <h3><a href="/<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3> <?php endwhile; } else { ?> <h2>Нет записей по теме!</h2> <?php } } $post = $backup; // копируем текущий объект обратно wp_reset_query(); // используем оригинальный запрос снова ?>
Чтобы изменить количество записей по теме, найдите 'showposts'=>5
и замените 5 на нужное число. Также можно изменить сообщение Нет записей по теме!.
7. Задаем индивидуальные стили для заметки
Обычно в блоге WordPress каждая заметка выглядит также как и остальные - одинаковый шрифт, фон и так далее. С помощью описанной техники вы сможете задать для заметки индивидуальный стиль, изменяя фон, цвета, шрифты и все остальное. Так можно выделять примечательные и оригинальные заметки из общего потока и привлекать внимание читателей.
Откроем файл single.php
и найдем в нем следующий код:
И заменим его следующим кодом:
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
Теперь можно, зная номер заметки XXX, задать стиль для нее с помощью id#post-XXX
в файле style.css
:
#post-112 { background: #113355; color:#069; font-weight:bold; }
8. Добавляем информацию о пользователе к заметке
В профиле пользователя WordPress можно ввести дополнительную информацию о себе. Ее можно выводить рядом с заметкой. Скопируйте ниже приведенный код в то место файла single.php
, где нужно выводить информацию о пользователе.
<div id="author-bio"> <h3>About <?php the_author(); ?></h3> <?php echo get_avatar( get_the_author_email(), '70' ); ?> <?php the_author_description(); ?> </div>
И задайте стили для отображения информации в файле style.css:
#author-bio { border-top: 1px dotted #cccccc; padding: 15px 0; } #author-bio h3 { font-size: 16px; margin: 0 0 5px 0; } #author-bio img { float: left; padding: 2px; border: 1px solid #cccccc; margin: 5px 15px 0 0; }
Обратите внимание, что используемый код получает Gravatar пользователя.
9. Автоматически создаем короткие URL с помощью Bit.ly
Распространение ссылок на статьи на вашем блоге через социальные сети способствует увеличению посетителей вашего сайта. Но Twitter имеет ограничение в 140 символов, что является очень маленьким параметром для длинных ссылок с датой и названием заметки, которая должна сопровождаться комментарием о содержании.
Разумно использовать bit.ly и создавать короткий URL автоматически каждый раз, когда размещается заметка. Код, представленный ниже, позволяет избавиться от создания коротких URL вручную. Просто добавьте код в файл functions.php
вашей темы:
function bitly($url) { $content = file_get_contents("http://api.bit.ly/v3/shorten?login=YOURLOGIN &apiKey=YOURAPIKEY &longUrl=".$url."&format=xml"); $element = new SimpleXmlElement($content); $bitly = $element->data->url; if($bitly){ echo $bitly;} else{ echo '0'; } }
Теперь, если вы хотите сделать адрес URL публичным и позволить пользователю копировать его, нужно скопировать следующий код в цикл в файле single.php
:
<?php bitly(get_permalink($post->post_id)); ?>
10. Создаем автозаполнение поля поиска на основе AJAX
Если пользователь ищет что-то на вашем блоге, то ему стоит немного помочь? Данный код использует технику, которая стала популярной благодаря Google. При заполнении поля поиска будет выводиться выпадающий список тегов на основании того, что уже было введено в поле поиска.
Для использования кода нужно загрузить последнюю версию jQuery и плагина Autocomplete. Теперь создаем папку js в каталоге темы и помещаем оба файла туда. Далее копируем следующий код перед тегом /head
в файл header.php
вашей темы:
<script type="text/javascript" src="/<?php bloginfo('template_directory'); ?>/js/jquery.js"></script> <script type="text/javascript" src="/<?php bloginfo('template_directory'); ?>/js/jquery.autocomplete.pack.js"></script> <link rel="stylesheet" type="text/css" href="/<?php bloginfo('template_directory'); ?>/js/jquery.autocomplete.css" media="screen" />
Теперь нужно добавить следующий код перед тегом /head
и заменить $("#ID_ПОЛЯ ПОИСКА")
на реальный id, который используется для поля поиска на вашем сайте WordPress.
<script type="text/javascript">
$(document).ready(function(){
var data = '<?php global $wpdb; $search_tags = $wpdb->get_results("SELECT name FROM $wpdb->terms"); foreach ($search_tags as $mytag){ echo $mytag->name. " "; } ?>'.split(" ");
$("#ID_ПОЛЯ ПОИСКА
").autocomplete(data);
})
</script>
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/y3sjtP44DiY/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей Индийская пословица |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.