СправошнаяПоиск

Полезные сниппеты для WordPress

По сути, фрагменты кода для WordPress используются для выполнения определенных действий, для которых в противном случае потребовался бы специальный плагин меньшего размера. Кроме того, такие фрагменты кода помещаются в один из файлов ядра или темы WordPress (обычно это файл functions.php вашей темы).

В этой статье мы перечислили несколько очень полезных фрагментов кода для пользователей WordPress:

Предупреждение!

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

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

Теперь перейдем к фрагментам кода для пользователей WordPress!

1. Разрешить участникам загружать изображения

По умолчанию WordPress не разрешает учетным записям авторов загружать изображения. Вы можете, конечно, повысить эту конкретную учетную запись до Автора или Редактора, и это даст им права загружать и изменять изображения. Однако это также предоставит им дополнительные права, такие как возможность публиковать свои собственные статьи (в отличие от подача на рассмотрение).

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

 

if ( current_user_can('contributor') && !current_user_can('upload_files') )
     add_action('admin_init', 'allow_contributor_uploads');      
     function allow_contributor_uploads() {
          $contributor = get_role('contributor');
          $contributor->add_cap('upload_files');
     }

 

2. Показывать популярные посты без плагинов

Этот немного сложнее. Однако, если вы не слишком заинтересованы в установке дополнительного плагина для демонстрации популярных постов (скажем, у вас ограниченная память сервера или дисковое пространство), следуйте этому фрагменту кода.

Вставьте следующее в functions.php :

 

function count_post_visits() {
    if( is_single() ) {
        global $post;
        $views = get_post_meta( $post->ID, 'my_post_viewed', true );
        if( $views == '' ) {
            update_post_meta( $post->ID, 'my_post_viewed', '1' );   
        } else {
            $views_no = intval( $views );
            update_post_meta( $post->ID, 'my_post_viewed', ++$views_no );
        }
    }
}
add_action( 'wp_head', 'count_post_visits' );

 

После этого вставьте следующее в файлы шаблонов, где вы хотите отображать популярные сообщения:

 

$popular_posts_args = array(
    'posts_per_page' => 3,
    'meta_key' => 'my_post_viewed',
    'orderby' => 'meta_value_num',
    'order'=> 'DESC'
);
$popular_posts_loop = new WP_Query( $popular_posts_args );
  while( $popular_posts_loop->have_posts() ):
    $popular_posts_loop->the_post();
    // Loop continues
endwhile;
wp_reset_query();

 

3. Отключить поиск в WordPress

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

По сути, это пользовательская функция, которая просто сводит на нет функцию поиска. Не только панель поиска на боковой панели или в меню, но и вся концепция собственного поиска WP исчезла. Почему это может быть полезно? Опять же, это может помочь, если ваш веб-сайт работает на сервере с низкими характеристиками и у вас нет контента, который необходимо искать (возможно, вы не ведете блог).

Снова добавьте это в файл functions.php :

 

function fb_filter_query( $query, $error = true ) {
if ( is_search() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;
// to error
if ( $error == true )
$query->is_404 = true;
}
}
add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

 

4. Защитите свой сайт от вредоносных запросов

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

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

 

global $user_ID; if($user_ID) {
    if(!current_user_can('administrator')) {
        if (strlen($_SERVER['REQUEST_URI']) > 255 ||
            stripos($_SERVER['REQUEST_URI'], "eval(") ||
            stripos($_SERVER['REQUEST_URI'], "CONCAT") ||
            stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
            stripos($_SERVER['REQUEST_URI'], "base64")) {
                @header("HTTP/1.1 414 Request-URI Too Long");
                @header("Status: 414 Request-URI Too Long");
                @header("Connection: Close");
                @exit;
        }
    }
}

 

5. Разбивайте свой сайт на страницы без плагинов

Хорошая нумерация страниц очень полезна для того, чтобы пользователи могли просматривать ваш сайт. Вместо «предыдущих» или «следующих» ссылок. Здесь в игру вступает еще один из наших фрагментов кода для WordPress — он добавляет хорошее разбиение на страницы к вашему контенту.

В functions.php :

 

global $wp_query;
$total = $wp_query->max_num_pages;
// only bother with the rest if we have more than 1 page!
if ( $total > 1 )  {
     // get the current page
     if ( !$current_page = get_query_var('paged') )
          $current_page = 1;
     // structure of "format" depends on whether we're using pretty permalinks
     $format = empty( get_option('permalink_structure') ) ? '&page=%#%' : 'page/%#%/';
     echo paginate_links(array(
          'base' => get_pagenum_link(1) . '%_%',
          'format' => $format,
          'current' => $current_page,
          'total' => $total,
          'mid_size' => 4,
          'type' => 'list'
     ));
}

 

6. Отключить панель администратора

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

 

// Remove the admin bar from the front end
add_filter( 'show_admin_bar', '__return_false' );

 

7. Показывать миниатюры сообщений в RSS-канале

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

Поместите его в свой файл functions.php :

 

// Put post thumbnails into rss feed
function wpfme_feed_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = '' . $content;
}
return $content;
}
add_filter('the_excerpt_rss', 'wpfme_feed_post_thumbnail');
add_filter('the_content_feed', 'wpfme_feed_post_thumbnail');

 

8. Измените структуру постоянных ссылок автора

По умолчанию WordPress показывает профили авторов как файлы yoursite.com/author/name. Однако вы можете изменить его на что угодно, напримерyoursite.com/writer/name

Следующий фрагмент кода необходимо вставить в файл functions.php . Затем он меняет структуру постоянной ссылки автора на «/profile/name»:

 

add_action('init', 'cng_author_base');
function cng_author_base() {
    global $wp_rewrite;
    $author_slug = 'profile'; // change slug name
    $wp_rewrite->author_base = $author_slug;
}

 

9. Автоматическая ссылка на имена пользователей Twitter в контенте

Это особенно полезно, если вы используете веб-сайт, который много внимания уделяет Твиттеру (запрещён в России) (вероятно, сайт с вирусным контентом и т. д.). Следующий фрагмент кода для functions.php преобразует все упоминания @ в вашем контенте в соответствующие профили Твиттера.

Например, упоминание @happy в вашем контенте будет преобразовано в ссылку на учетную запись Twitter «twitter.com/happy» («счастливый» — это имя пользователя):

 

function content_twitter_mention($content) {
return preg_replace('/([^a-zA-Z0-9-_&])@([0-9a-zA-Z_]+)/', "$1<a href=\"http://twitter.com/$2\" target=\"_blank\" rel=\"nofollow\">@$2</a>", $content);
}
add_filter('the_content', 'content_twitter_mention');   
add_filter('comment_text', 'content_twitter_mention');

 

10. Создайте короткий код пожертвования PayPal

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

 

function donate_shortcode( $atts, $content = null) {
global $post;extract(shortcode_atts(array(
'account' => 'your-paypal-email-address',
'for' => $post->post_title,
'onHover' => '',
), $atts));
if(empty($content)) $content='Make A Donation';
return '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business='.$account.'&item_name=Donation for '.$for.'" title="'.$onHover.'">'.$content.'</a>';
}
add_shortcode('donate', 'donate_shortcode');

 

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

 

[donate]My Text Here[/donate]