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

1. Автоматическое добавление кнопки Google+ к вашим постам

Google+ — это новый соц. сервис, разработанный интернет-гигантом, компанией Google. Если вы хотите к нему присоединиться и дать возможность своим читателям "плюсовать" ваши посты, то почему бы вам не добавить автоматически кнопку для Google+ ко всем вашим записям в блоге?

Просто вставьте приведенный ниже код в файл functions.php. После того, как вы сохраните изменения в файле, кнопка Google+ автоматически будет отображаться рядом с вашими публикациями в блоге.

add_filter('the_content', 'wpr_google_plusone');
function wpr_google_plusone($content) {
	$content = $content.'<div class="plusone"><g:plusone size="tall" href="'.get_permalink().'"></g:plusone></div>';
	return $content;
}
add_action ('wp_enqueue_scripts','wpr_google_plusone_script');
function wpr_google_plusone_script() {
	wp_enqueue_script('google-plusone', 'https://apis.google.com/js/plusone.js', array(), null);
}

Источник

2. Перенаправление RSS-лент в Feedburner

Feedburner — хорошо известный сервис, позволяющий вам узнать, сколько людей подписалось на чтение вашего RSS-канала. Но вместо того, чтобы возиться с настройкой и модификацией вашей темы, чтобы заменить встроенные ссылки "фида" в WordPress, вам определенно стоит использовать этот хак, чтобы автоматически перенаправить все ваши фиды из WordPress в Feedburner.

Отредактируйте строку 4 и замените адрес моего "фида" собственным. Сделав это, вставьте сниппет кода в ваш файл functions.php, сохраните изменения в нем - и все готово!

add_action('template_redirect', 'cwc_rss_redirect');
function cwc_rss_redirect() {
	if ( is_feed() && !preg_match('/feedburner|feedvalidator/i', $_SERVER['HTTP_USER_AGENT'])){
		header('Location: http://feeds.feedburner.com/catswhocode');
		header('HTTP/1.1 302 Temporary Redirect');
	}
}

Источник

3. Отслеживание просмотров постов без использования плагинов

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

function getPostViews($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0 View";
    }
    return $count.' Views';
}
function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}

А теперь добавьте код в файл single.php в цикле:

<?php setPostViews(get_the_ID()); ?>

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

<?php echo getPostViews(get_the_ID()); ?>

Источник

4. Отображение количества поклонников блога в Facebook в полном тексте

Если вы завели страничку в Facebook для своего блога, вам наверняка захочется отображать в блоге число существующих у вас "поклонников" в данной соц. сети. Следующий сниппет поможет вам выводить на странице вашего блога число "фанов". Просто вставьте этот код в любой из файлов вашей темы там, где вам хочется отображать счетчик с числом читателей из соц. сети.

<?php
	$page_id = "YOUR PAGE-ID";
	$xml = @simplexml_load_file("http://api.facebook.com/restserver.php?method=facebook.fql.query&query=SELECT%20fan_count%20FROM%20page%20WHERE%20page_id=".$page_id."") or die ("a lot");
	$fans = $xml->page->fan_count;
	echo $fans;
?>

Источник

5. Отображение поисковых терминов из поисковика Google

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

<?php
$refer = $_SERVER["HTTP_REFERER"];
if (strpos($refer, "google")) {
	$refer_string = parse_url($refer, PHP_URL_QUERY);
	parse_str($refer_string, $vars);
	$search_terms = $vars['q'];
	echo 'Welcome Google visitor! You searched for the following terms to get here: ';
	echo $search_terms;
};
?>

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

Источник

6. Простое отображение внешних файлов при помощи шорт-кода

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

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

function show_file_func( $atts ) {
  extract( shortcode_atts( array(
    'file' => ''
  ), $atts ) );

  if ($file!='')
    return @file_get_contents($file);
}

add_shortcode( 'show_file', 'show_file_func' );

Сохранив изменения в вашем файле functions.php, вы сможете использовать этот шорт-код при помощи следующего синтаксиса:

[show_file file="http://www.somesite.com/somepage.html"]

Источник

7. Отправка еmail-уведомлений соавторам блога после того, как их пост опубликован

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

function wpr_authorNotification($post_id) {
   $post = get_post($post_id);
   $author = get_userdata($post->post_author);

   $message = "
      Hi ".$author->display_name.",
      Your post, ".$post->post_title." has just been published. Well done!
   ";
   wp_mail($author->user_email, "Your article is online", $message);
}
add_action('publish_post', 'wpr_authorNotification');

Источник

8. Отображение снимков внешних веб-сайтов при помощи шорт-кода

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

Начнем с того, что добавим несколько функций в ваш файл functions.php:

<?php
function bm_sc_mshot ($attributes, $content = '', $code = '') {

	extract(shortcode_atts(array(
		'url' => '',
		'width' => 250,
	), $attributes));

	$imageUrl = bm_mshot ($url, $width);

	if ($imageUrl == '') {
		return '';
	} else {
		$image = '<img src="' . $imageUrl . '" alt="' . $url . '" width="' . $width . '"/>';
		return '<div class="browsershot mshot"><a href="' . $url . '">' . $image . '</a></div>';
	}

}

function bm_mshot ($url = '', $width = 250) {

	if ($url != '') {
		return 'http://s.wordpress.com/mshots/v1/' . urlencode(clean_url($url)) . '?w=' . $width;
	} else {
		return '';
	}

}

add_shortcode('browsershot', 'bm_sc_mshot');
?>

Закончив с этим, перейдем к использованию шорт-кода для создания снимков с сайтов при помощи вашего редактора постов WordPress, так, как это показано ниже:

[browsershot url="http://link-to-website" width="foo-value"]

Источник

9. Составление списка сайтов из вашей сети

Вот еще одна отличнейшая функция, при помощи которой можно управлять сетью сайтов, используя возможности CMS WordPress 3.+. Вам нужен полный список сайтов вашей сети? Его довольно просто создать и использовать при помощи приведенной далее функции. Для начала, как вы наверное догадываетесь, надо прописать функции в файле functions.php для вашей темы:

function wp_list_sites( $expires = 7200 ) {
   if( !is_multisite() ) return false;

   // Because the get_blog_list() function is currently flagged as deprecated
   // due to the potential for high consumption of resources, we'll use
   // $wpdb to roll out our own SQL query instead. Because the query can be
   // memory-intensive, we'll store the results using the Transients API
   if ( false === ( $site_list = get_transient( 'multisite_site_list' ) ) ) {
      global $wpdb;
      $site_list = $wpdb->get_results( $wpdb->prepare('SELECT * FROM wp_blogs ORDER BY blog_id') );
      // Set the Transient cache to expire every two hours
      set_site_transient( 'multisite_site_list', $site_list, $expires );
   }

   $current_site_url = get_site_url( get_current_blog_id() );

   $html = '
<ul id="network-menu">' . "\n";

   foreach ( $site_list as $site ) {
      switch_to_blog( $site->blog_id );
      $class = ( home_url() == $current_site_url ) ? ' class="current-site-item"' : '';
      $html .= "\t" . '
<li id="site-' . $site->blog_id . '" '="" .="" $class=""><a href="' . home_url() . '">' . get_bloginfo('name') . '</a></li>

' . "\n";
      restore_current_blog();
   }

   $html .= '</ul>

<!--// end #network-menu -->' . "\n\n";

   return $html;
}

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

<?php
// Multisite Network Menu
$network_menu = wp_list_sites();
if( $network_menu ):
?>
<div id="network-menu">
   <?php echo $network_menu; ?>
</div>

<!--// end #network-menu -->
<?php endif; ?>

Источник

10. Добавление класса публикации, если у поста есть thumbnail-картинка

Оформляя стиль вашей темы, вы можете столкнуться с определенными трудностями в том случае, когда есть посты как с картинками-thumbnail, так и без них. Чтобы упростить работу с кодом и оформлением, воспользуйтесь следующим сниппетом, который добавляет класс has_thumb в css для класса публикаций. Просто вставьте приведенный ниже код в файл functions.php:

function has_thumb_class($classes) {
	global $post;
	if( has_post_thumbnail($post->ID) ) { $classes[] = 'has_thumb'; }

		return $classes;
}
add_filter('post_class', 'has_thumb_class');

Источник

Источник: CatsWhoCode.com

Вам понравился материал?

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

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

7 комментариев

сначала новые
по рейтингу сначала новые по хронологии
Вячеслав

У вас на сайте отличный счётчик просмотров.
Как это реализовано? По пункту 3 данной статьи или какой-то плагин?

Это плагин https://wordpress.org/plugins/page-views-count/ который мы немного заточили под себя с помощью CSS

Для 7 пункта выгодней использовать draft_to_publish, т.к. при любой правке статьи, письма будут валиться на ящик каждый раз)))

Спасибо за подсказку!

Местный

благодарю за 3 пункт, нужная штука, почему по умолчанию в ВП нет такого свойства?

Меры безопасности, знаете ли)

Спасибо за данную статью! К сожалению у меня превью из №8 очень долго генерируется, уже пять минут жду 2 картинки сгенерировались а еще две висят, не сталкивались с подобным?