Статьи

Супер полезные взломы и фрагменты WordPress

В одном из моих последних постов года я решил поделиться с вами списком самых интересных, полезных и удивительных хаков WordPress и фрагментов кода, которые облегчат жизнь блоггерам. Приятного чтения и удачного кодирования!

Добавьте кнопку 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);
}

Источник: http://www.wprecipes.com/wordpress-hook-automatics-add-a-google-button-to-your-posts

Перенаправить 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');
	}
}

Источник: http://wp.smashingmagazine.com/2011/12/07/10-tips-optimize-wordpress-theme/

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

Вам интересно, сколько людей читает ваши посты? Существует несколько плагинов «количество просмотров», но вот простой способ сделать это самостоятельно. Первое, что нужно сделать, это создать функции. Вставьте приведенный ниже код в ваш файл 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()); ?>

Источник: http://wpsnipp.com/index.php/functions-php/track-post-views-without-a-plugin-using-post-meta/

Показать количество поклонников 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;
?>

Источник: http://wp-snippets.com/742/display-number-facebook-fans/

Показать условия поиска из 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;
};
?>

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

Источник: http://wp-snippets.com/820/display-search-terms-from-google-users/

Легко отображать внешние файлы с помощью шорткода

При ведении блога иногда может потребоваться добавить файл с удаленного веб-сайта. Следующий код создаст шорткод, чтобы вы могли включить любой файл из вашего редактора постов 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"]

Источник: http://www.prelovac.com/vladimir/wordpress-shortcode-snippet-to-display-external-files

Отправляйте сообщения авторам по электронной почте, когда их сообщения публикуются

В случае, если вы ведете блог с несколькими авторами, полезно сообщить своим авторам, когда одна из их публикаций публикуется. Следующий код должен быть вставлен в ваш 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');

Источник: http://www.wprecipes.com/how-to-automatics-email…

Отображать снимки внешних сайтов, используя шорткод

Вы демонстрируете сайты в своем блоге? Если да, может оказаться очень полезным иметь возможность сделать снимок любого веб-сайта, просто используя шорткод и URL-адрес веб-сайта. Этот код, созданный Ben Gillbanks и изначально выпущенный как плагин, отлично справится с этой задачей.

Давайте начнем с добавления нижеприведенных функций в ваш файл 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');
?>

После этого вы можете использовать шорткод [browsershot] в редакторе WordPress, как показано ниже:

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

Источник: http://www.binarymoon.co.uk/2010/02/automated-take-screenshots-website-free/

Список сайтов из вашей сети

Вот еще одна очень полезная функция для тех, кто работает в сети веб-сайтов, используя функции, доступные в 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; ?>

Источник: http://wp.smashingmagazine.com/2011/11/17/wordpress-multisite-practical-functions-methods/

Добавить класс сообщения, если у сообщения есть миниатюра

При оформлении вашей темы может быть сложно иметь дело с постом, у которого есть миниатюра поста, и с теми, кто этого не делает. Чтобы упростить ваше внешнее кодирование, вы должны использовать этот код, который добавляет класс has_thumb css в класс post.

Просто вставьте приведенный ниже код в ваш файл 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');

Источник: http://wp-snippets.com/2178/add-post-class-if-post-has-thumbnail/

 

Источник: http://www.catswhocode.com/blog/super-useful-wordpress-hacks-and-snippets