Рейтинг 4.0/5 (4 голосов)
Решил собрать коллекцию доработок, хаков и фишек, которые я в последнее время часто использую при создании сайтов на Wordpress.
Брендированная админка.
Задача: Сделать вывод собственного логотипа вместо логотипа Wordpress на странице входа в админку, и в заголовке админки.
Для вывода логотипа на странице логина скопируйте этот код в файл functions.php вашей темы:
function my_custom_login_logo() {
echo '<style type="text/css">
html {background-color:#001721;}
h1 a { background-image:url('.get_bloginfo('template_directory').'/images/logo.png) !important; } </style>';
}
add_action('login_head', 'my_custom_login_logo');
Таким образом вы заменяете вывод логотипа на собственный logo.png,
находящийся в папке images вашей текущей темы. Как видите, изменения
касаются только css и вы можете туда добавить еще свои стили для других
элементов (я, например, еще люблю поменять фон в фирменные цвета тень
добавить яркого цвета, чтобы было как эффект мягкой подсветки)
Вот примеры таких страниц входа:
А вот код, сменит логотип в заголовке админке:
function my_custom_logo() {
echo '<style type="text/css">#header-logo { background-image: url('.get_bloginfo('template_directory').'/img/clogo.png) !important; }</style> ';
}
add_action('admin_head', 'my_custom_logo');
Замена текста в футере админки
Еще одна фишка, добавляет в футер админки данные об использованной оперативки на хостинге, количество запросов к MySQL и скорость генерации страницы:
function usage($value) {
if ($value == 1)
echo '<div class="usage">';
printf(('%d / %s'), get_num_queries(), timer_stop(0, 3));
echo ' / ' . round(memory_get_usage()/1024/1024, 2) . ' мб';
if ($value == 1)
echo '</div>';
}
add_action('admin_footer_text', 'usage');
Конечно вы можете заменить это и в команде echo выводить какую нибудь другую информацию.
Удаление ненужных блоков в "Мастерской"
Следующий хак удаляет ненужные блоки с главной страницы админки, так называемой "Мастерской":
function custom_dashboard() {
global $wp_meta_boxes;
//unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
}
add_action('wp_dashboard_setup', 'custom_dashboard');
В каждой строке удаляется по одному блоку с "Мастерской":
dashboard_recent_comments - последние комментарии
dashboard_incoming_links - входящие ссылки
dashboard_plugins - плагины
rss новостей
dashboard_quick_press - быстрая публикация
dashboard_recent_drafts - недавние черновики
dashboard_primary - rss новости Wordpress
dashboard_secondary - другие rss новости Wordpress
Я обычно удаляю все кроме основного блока "Прямо сейчас". На сайтах с включенной возможностью комментирования еще оставляю блок "Последние комментарии". Вы можете так же выборочно удалить ненужные элементы, удалив строку, соответствующую им.
Удаление ненужных блоков в head секции
Следующий
хак я использую на сайтах-визитках где не нужно rss и перелинковки
между постами, так как основной контент идет на страницах. Он удаляет кучу ненужных строк в секции head кода html.
remove_action('wp_head', 'feed_links', 2); //rss
remove_action('wp_head', 'feed_links_extra', 3); //atom
remove_action('wp_head', 'index_rel_link'); // тут і нижче лінки для перелінковки сторінок
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
remove_action('wp_head', 'next_post_rel_link', 10, 0);
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'rel_canonical');
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'rsd_link'); // лінка для трекбеків
remove_action('wp_head', 'wlwmanifest_link'); // лінка для редактора Windows Live Writer
remove_action('wp_head', 'wp_generator'); // тег, в якому пише версія вордпресу
remove_action( 'init', 'wp_version_check' ); // видалення провірки оновлень
remove_action( 'load-plugins.php', 'wp_update_plugins' ); // не провіряти оновлення плагінів
remove_action( 'load-update.php', 'wp_update_plugins' );
remove_action( 'admin_init', '_maybe_update_plugins' );
remove_action( 'wp_update_plugins', 'wp_update_plugins' );
remove_action( 'admin_init', '_maybe_update_themes' ); // не провіряти оновлення тем
remove_action( 'wp_update_themes', 'wp_update_themes' );
Использовать это или нет на вашем блоге это уже на ваше усмотрение.
Запрет вставлять ссылки в комментариях
Если вы не хотите, чтобы ссылки оставленне комментаторами автоматически конвертировались в кликабельные ссылки, то вставьте этот код в functions.php:
remove_filter('comment_text', 'make_clickable', 9)
Показывать уведомление о новой версии Вордпреса только для админов
< ?php
function stop_wpupdate() {
if ( current_user_can('manage_options') ) {
return;
} else {
remove_action( 'admin_notices', 'update_nag', 3 );
}
}
add_action( 'admin_notices', 'stop_wpupdate', 1 );
?>
Кнопки удаления комментариев на странице поста
Предыдущая фишка с показом сообщений об обновлении вордпреса для админов использует функцию current_user_can которая определяет, какие текущий юзер имеет права. На основе этого я сделал доработку, показывающую ссылки на удаление комментариев и установления пометки "спам" для администраторов на странице поста. Этот код нужно вставить в functions.php:
function delete_comment_link($id) {
if (current_user_can('edit_post')) {
echo '| <a href="'.admin_url("comment.php?action=cdc&c=$id").'">del</a> ';
echo '| <a href="'.admin_url("comment.php?action=cdc&dt=spam&c=$id").'">spam</a>';
}
}
А саму функцию delete_comment_link вставить в файл comments.php вашей темы после функции edit_comment_link:
<?php edit_comment_link('Edit','',' '); delete_comment_link(get_comment_ID());?>
Анонс постов с определенной рубрики в сайдбаре
У меня была задача вывести в сайдбаре по первому предложению из трех постов в рубрике "Проекты". Я использовал такой код в файле sidebar.php:
<div class="sidenews">
<?php $my_query = new WP_Query('category_name=projects&showposts=3');
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<h3><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php preg_match( '/^.{150,}?[.?!]+(?=\s|$)/ ', get_the_content(), $A );
echo '<p>'.$A[ 0 ].'</p>'; ?>
<?php endwhile; ?>
<p><a href="<?php echo get_category_link('4') ?>">Все проекты</a></p>
</div>
Регулярное выражение ищет первое предложение, но если это предложение менее 150 символов, то она захватит и последующие предложения. Таким образом я избежал ошибки, когда в первом предложении встречается чья то фамилия или адрес сайта.
Вставка кнопки твитера Tweet
Чтобы появилась кнопка с подсчетом количества ретвитов нужно вставить вот такой код в файл single.php вашей темы (например после кода the_title ();):
<a href="http://twitter.com/share" class="twitter-share-button" data-text="<?php the_title(); ?>" data-url="<?php the_permalink(); ?>" data-count="horizontal">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
Это выведет горизонтальную кнопку с количеством ретвитов с правой стороны. А чтобы количество ретвитов показывалось над кнопкой, то замените data-count = "horizontal" на data-count = "vertical"
|