Мощный WordPress Советы и хитрости

Содержание скрыть

Я работаю с WordPress с незапамятных времен, и хотя я заглянуть в исходный код регулярно, я все еще обнаружить новые советы и приемы. Я составил свой собственный список из 21 методов, которые являются удобными, умные, весело или передовой практики редко следуют. Я надеюсь, что каждый найдет что-то новое в списке!

21 tips

1. WordPress имеет тонну встроенных сценариев

Используя большой wp_enqueue_script() wp_enqueue_style() и, вы можете включить стили и скрипты легко с управлением зависимостями. Но знаете ли вы, что WordPress имеет много сценариев уже построенв в? j’ury, многие элементы J’Uery UI, j’ury form, SWF Object, Tiny MCE, Jcrop и Thickbox являются лишь некоторыми более известными из них. Весь список можно найти в WordPress Codex. Если вы заинтересованы в обучении, как эффективно использовать функции enqueue, я рекомендую “Руководство разработчика по бесконфликтной JavaScript и CSS в WordPress” прямо здесь, на Smashing Magazine!

Дальнейшее чтение на SmashingMag:

2. Заменить встроенные скрипты, отменяя их

Если вы живете на краю кровотечения, вы можете использовать версии скриптов, кроме встроенных. Использование более новой версии j’ery является общей (хотя и не обязательно хорошей) практикой, что можно сделать следующим образом.

function my_scripts_method() {
   wp_deregister_script( 'jquery' );
   wp_register_script( 'jquery', get_template_directory_uri() . '/js/jquery-new.js');
   wp_enqueue_script( 'jquery' );
}
add_action('wp_enqueue_scripts', 'my_scripts_method');

Но не делайте этого только для того, чтобы хвастаться использованием последних вещей. WordPress включает в себя версию j’s, что он делает для обеспечения максимальной совместимости.

Используйте другую версию j’sеry только при возникновении проблем совместимости, такой плагин, который специально требует его.

3. Сила Perfect JPG изображения

Это классический пример того, почему работа в команде полезна. Мой хороший друг Ларс сказал мне, что WordPress не использует 100% качество для изображений, поданных на веб-сайте, чтобы сохранить пространство и пропускную способность. Он также показал мне решение, конечно:

add_filter( 'jpeg_quality', 'smashing_jpeg_quality' );
function smashing_jpeg_quality() {
   return 100;
}

WordPress использует качество по умолчанию 90%. Это нормально в большинстве случаев; Я сомневаюсь, что многие люди могут видеть разницу. Но если первоклассное качество изображения является обязательным на вашем сайте (для портфолио, фотографии и т.д.), изменение значения может быть лучше.

4. Reнаправление FeedBurner

FeedBurner используется почти на каждом блоге, что я работал, и все же я никогда не знаю, как именно установить его наизусть. Благодаря Элио для написания “10 советов по оптимизации WordPress Тема“, который содержит этот фрагмент:

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

5. Использование функций общей таксономии

Ряд функций таксономии может обрабатывать пользовательские таксономии, а также встроенные теги и категории. Ссылка на функции Кодекса содержит полный перечень функций таксономии. Мне особенно нравится использовать get_term() , get_terms() и wp_get_object_terms() . Чтобы сделать вещи более модульными, я использую эти функции столько, сколько я могу, даже для тегов и категорий.

6. Настройка сессий в WordPress

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

add_action( 'init', 'smashing_session_start' );
function smashing_session_start() {
   if ( !session_id() ) {
      session_start();
   }
}

Обратите внимание, что, в то время как сеансы, как правило, довольно безопасны, реализовать IP проверки или добавленной защиты nonce просто быть на безопасной стороне. До тех пор, как вы передачи нечувствительных данных, однако, вы будете в порядке. Проверьте Марк Jaquith большая статья о nonces для получения дополнительной информации.

7. Список всех крючковатых функций

Я начал писать функцию, чтобы сделать это. Когда я сделал быстрый поиск Google, оказалось, что WP Рецепты было именно то, что мне нужно.

function list_hooked_functions($tag=false){
   global $wp_filter;
   if ($tag) {
      $hook[$tag]=$wp_filter[$tag];
      if (!is_array($hook[$tag])) {
         trigger_error("Nothing found for '$tag' hook", E_USER_WARNING);
         return;
      }
   }
   else {
      $hook=$wp_filter;
      ksort($hook);
   }

   echo '<pre>';

   foreach($hook as $tag => $priority){
      echo "<br />&gt;&gt;&gt;&gt;&gt;t<strong>$tag</strong><br />";
      ksort($priority);
      foreach($priority as $priority => $function){
         echo $priority;
         foreach($function as $name => $properties) {
            echo "t$name<br />";
         }
      }
   }
   echo '</pre>';
   return;
}

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

8. Автоматически добавляйте теги параграфа к всему

WordPress делает это автоматически к содержанию и выдержке, но никакая причина не использовать его в другом месте. Функция, ответственная за превращение wpautop() двойной линии, разбивается в абзацы.

$my_text = 'Welcome!
Smashing Magazine is a great place to learn new things.
I hope you’re having a nice time!';

echo wpautop( $my_text );

Иногда вы хотите отключить этот фильтр по умолчанию, что вы можете сделать, удалив его из содержимого и выдержки, как это:

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

9. Отправить электронную почту с помощью WordPress

Некоторое время назад, я написал длинную статью на “Создание идеальных писем для вашего WordPress веб-сайт“, часть из которых имеет отношение к использованию wp_mail() функций. Эти функции позволяют использовать встроенный WordPress Awesomeness для отправки писем пользователям.

$message = 'Hello, thanks for reading my post! I hope to see you back soon.';
wp_mail( 'someonesemail@example.com', 'Thanks for reading my post!', $message);

Вы также можете отправить HTML-контент с помощью фильтра:

add_filter ("wp_mail_content_type", "smashing_mail_content_type");
function smashing_mail_content_type() {
   return "text/html";
}

Он пришел, как сюрприз для меня около шести месяцев назад, что вам не нужны какие-либо плагины, чтобы снять надлежащего paging (т.е. не только “Предыдущий” и “Следующий” ссылки); вы можете сделать это с родной функцией. paginate_links()Функция удобная мелочь, которая позволяет показать pagination для любого типа контента, а не только WordPress цикла.

// Pagination for a WordPress loop
$list = new WP_Query( $query_args );
$pagination = array(
   'base'       => str_replace( 99999, '%#%', get_pagenum_link( 99999 ) ),
   'format'     => '?paged=%#%',
   'current'    => max( 1, get_query_var( 'paged' ) ),
   'total'      => $list->max_num_pages,
   'next_text'  => 'next',
   'prev_text'  => 'previous'
);
echo '<div class="pagination primary-links">' . paginate_links( $pagination ) . '</div>';

// Pagination for anything
$list = range(1, 100);
$items_per_page = 12;
$pagination = array(
   'base'       => get_bloginfo( 'url' ) . '/mypage/%_%',
   'format'     => '?paged=%#%',
   'current'    => $_GET['current_page'],
   'total'      => ceil( max($list) / $items_per_page ),
   'next_text'  => 'go forth',
   'prev_text'  => 'go back'
);
echo '<div class="pagination primary-links">' . paginate_links( $pagination ) . '</div>';

11. Загрузить файлы с легкостью

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

$upload = wp_upload_bits( $_FILES['myfile']['name'], null, file_get_contents( $_FILES['myfile']['tmp_name'] ) );
echo 'Well uploaded! The path to this file is ' . $upload['file'] . ' and the url to this file is ' . $upload['url'];

12. Twitter-Like Time Display

Это был еще один шок для меня какое-то время назад, тем более, что он был в WordPress с версии 1.5! Если вы хотите показать зрителям относительную дату в читаемом человеком формате, например, «5 human_timed_diff() минут назад» или «месяц назад», попробуйте эту функцию.

$diff = human_time_diff( '2012-05-05 12:05:00', '2012-05-05 12:10:00' );
echo 'This comment was submitted ' . $diff . 'ago';

// Output: This comment was submitted 5 minutes ago

13. Войти в систему как любой пользователь

Если вы строите сложный веб-сайт с большим количеством ролей, возможность быстро и легко переключаться между ними будет полезно. Позволяет wp_set_auth_cookie() войти в текущий пользователь в зависимости от идентификатора.

$user_id = 4;
   wp_set_auth_cookie( $user_id );

Будьте осторожны при использовании этой функции; оставлены без контроля, он может войти в каждый пользователь в качестве пользователя номер 4. Даже во время тестирования, я ориентируюсь именно на мой IP, и, возможно, даже на специальную строку URL просто чтобы быть уверенным. Тем не менее, при надлежащей безопасности, он может быть использован как часть пользовательского сценария входа в систему.

14. Добавить пользовательские поля профиля в области администратора

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

<?php
add_action( 'show_user_profile', 'smashing_profile_fields' );
add_action( 'edit_user_profile', 'smashing_profile_fields' );

function smashing_profile_fields( $user ) { 
?>

   <h3>Social Sites</h3>

   <table class="form-table">

      <tr>
         <th><label for="twitter">Twitter</label></th>

         <td>
            <input type="text" name="twitter" id="twitter" value="<?php echo esc_attr( get_the_author_meta( 'twitter', $user->ID ) ); ?>" /><br />
            <span class="description">Your Twitter Username</span>
         </td>
      </tr>

      <tr>
         <th><label for="twitter">Facebook</label></th>

         <td>
            <input type="text" name="facebook" id="facebook" value="<?php echo esc_attr( get_the_author_meta( 'facebook', $user->ID ) ); ?>" /><br />
            <span class="description">Your Facebook Profile URL</span>
         </td>
      </tr>

      <tr>
         <th><label for="twitter">Linkedin</label></th>

         <td>
            <input type="text" name="linkedin" id="linkedin" value="<?php echo esc_attr( get_the_author_meta( 'linkedin', $user->ID ) ); ?>" /><br />
            <span class="description">Your Linkedin Profile URL</span>
         </td>
      </tr>

   </table>

<?php
}
add_action( 'personal_options_update', 'smashing_save_profile_fields' );
add_action( 'edit_user_profile_update', 'smashing_save_profile_fields' );

function smashing_save_profile_fields( $user_id ) {
   if ( !current_user_can( 'edit_user', $user_id ) )
      return false;

   update_user_meta( $user_id, 'twitter', $_POST['twitter'] );
   update_user_meta( $user_id, 'facebook', $_POST['facebook'] );
   update_user_meta( $user_id, 'linkedin', $_POST['linkedin'] );
}

15. Деанимировать URL-адреса с легкостью

При работе с URL-адресами всегда убедитесь, что они правильно сформированы и не содержат недействительных или опасных символов. Функция esc’url() позволяет делать именно это.

$my_url = 'http://mypage.com/?awesome=true';
   $url = esc_url( $my_url );

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

16. Расширение возможностей текстовых виджетов

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

add_filter( 'widget_text', 'do_shortcode' );

17. Добавить пользовательские типы сообщений в RSS Feed

Не будучи в состоянии сделать это легко от админ области является большой проблемой. Многие владельцы веб-сайтов отделить их содержание на пользовательские сообщения, и они также хотят, чтобы все их элементы, чтобы показать в каналах. Никогда не бойтесь – функция здесь!

add_filter('request', 'smashing_custom_feed');
function smashing_custom_feed( $vars ) {
   if ( isset( $vars['feed'] ) ) {
      $vars['post_type'] = get_post_types();
   }
   return $vars;
}

Хотя это здорово, это заставляет все ваши типы поста в канал. Если вы хотите добавить только некоторые из ваших пользовательских типов публикаций в ленту, вы можете перечислить их отдельно.

add_filter('request', 'smashing_custom_feed');

$post_type_list = array( 'post', 'products' );
function smashing_custom_feed( $vars ) {
   if ( isset( $vars['feed'] ) AND !isset( $vars['post_type'] ) ) {
      $vars['post_type'] = $post_type_list;
   }
   return $vars;
}

18. Не ломайте петли WordPress

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

$tmp_query = $wp_query;
query_posts('cat=5&order=ASC');
while( have_posts() ) : the_post() 
?>
   <a href="<?php the_permalink() ?>'><?php the_title() ?></a><br />
<?php
$wp_query = $tmp_query;

19. Запросы на таможенные базы данных

Если вам нужно нечто большее, чем то, $wpdb что функции WordPress по умолчанию дать вам, вы можете использовать, WordPress класса базы данных для запроса базы данных напрямую.

$recent_users = $wpdb->get_results( "SELECT display_name, user_registered FROM $wpdb->users ORDER BY user_registered DESC LIMIT 0,10" );

Этот класс имеет большие возможности и функции. Взгляните на “Взаимодействие с WordPress базы данных” для углубленного учебника.

20. Настроить WordPress Пост Изменения

Функция изменения поста в WordPress больш, но большинство потребителей не используют его. Записи баз данных создаются для изменений, даже если они не используются. Хотя они не являются большим ударом по производительности вашего сервера, если вы не используете изменения, вы можете отключить их, разместив следующий код в wp-config.php файле.

// To remove revisions
define( 'WP_POST_REVISIONS', FALSE );

// To limit them
define( 'WP_POST_REVISIONS', 5 );

20. Стиль Автор Комментарии

Если вы хотите, чтобы комментарии автора выскочили, просто используйте bypostauthor класс в CSS.

li.bypostauthor {
   background:#fafafa;
   color:#555;
}

21. Хранение всей страницы в переменной

В некоторых случаях хранение всего вывода в переменной может быть очень полезным. Это позволяет вносить глобальные изменения, сжимать или запутывать код и более легко. Все, что нам нужно, это буферизация выхода PHP и два крючка.

add_action('wp_head', 'smashing_buffer_start');
add_action('wp_footer', 'smashing_buffer_end');

function smashing_buffer_start() {
   ob_start( 'smashing_callback' );
}

function buffer_end() {
   ob_end_flush();
}

function smashing_callback( $content ) {
   // Feel free to do things to the content here
   $content = str_replace( 'great', 'awesome', $content );
   echo $content;
}

И список продолжается

Есть ли у вас какие-либо любимые WordPress советы и приемы или передовой практики, которые вы хотите следовали больше? Пожалуйста, поделитесь в комментариях, так что мы все можем узнать что-то новое!

(al) (еа)

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

Великолепный Журнал

Великолепный, сокрушительный, разящий (см. перевод smashing) независимый журнал о веб-разработке. Основан в 2006 году в Германии. Имеет няшный дизайн и кучу крутых авторов, которых читают 2 млн человек в месяц.

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

%d такие блоггеры, как: