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

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

10 хаков для WordPress | | 2012-06-19 12:09:18 | | Статьи Web-мастеру | | 1. Как выводить рекламу только для посетителей с поисковых сайтовС помощью данного кода ваш сайт будет показывать вашу рекламу только посетителям, пришедшим с поисковых сайтов. Причиной применения | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: