Archive for the ‘Wordpress’ Category

Полезные регулярки.

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

Примеры шаблонов

Выражение Совпадает
foo Слово foo
^foo Начинается с foo
foo$ Кончается с foo
^foo$ Точное совпадение с foo
[abc] a, b или c
[a-z] Любая строчная буква
[^A-Z] Любой  символ не в верхнем регистре
(gif|jpg) Совпадает либо gif либо jpeg
[a-z]+ Одна  или более строчных букв
[0-9.-] Любое число, точка или минус
^[a-zA-Z0-9_]{1,}$ Любое слово, в котором как минимум одна буква, число или _
([wx])([yz]) wy, wz или xy, xz
[^A-Za-z0-9] Любой символ (не буква и не цифра)
([A-Z]{3}|[0-9]{4}) Совпадает три буквы или четыре цифры

Read On…

Карта сайта — какая у вас?

Карты сайта обычно у всех одинаковы — это простыня со списком ссылок, которых чем больше — тем лучше. Считается, что так лучше в плане сео. И хотя для ботов уже давно делают свою карту, в xml, многие продолжают делат как раньше.Особенно часто для вп используют плагин dagon sitemap generator.

Но можно все сделать красиво. Нашел вот примерчик, как можно сделать красивую карту сайта.

slickmap-css-sitemap

Данный пример хорошо подходит для коммерческого сайта, а вот для блога переделать его проблемно. Особенно, если постов много и категорий.
Немного поколдовав, я сделал вот такую карту сайта с использованием jQuery . Под осликами наверно не будет корректно отображаться.
sitemap Read On…

Скрыть/показать несколько элементов — примеры jQuery

Одновременно выводит несколько скрывающихся/появляющихся блоков. Я использовал при создании своей карты сайта.

// Andy Langton's show/hide/mini-accordion - updated 18/03/2009
// Latest version @ http://andylangton.co.uk/jquery-show-hide

// this tells jquery to run the function below once the DOM is ready
$(document).ready(function() {

// choose text for the show/hide link - can contain HTML (e.g. an image)
var showText='Show';
var hideText='Hide';

// append show/hide links to the element directly preceding the element with a class of "toggle"
$('.toggle').prev().append(' (<a href="#">'+showText+'</a>)');

// hide all of the elements with a class of 'toggle'
$('.toggle').hide();

// capture clicks on the toggle links
$('a.toggleLink').click(function() {

// change the link depending on whether the element is shown or hidden
$(this).html ($(this).html()==hideText ? showText : hideText);

// toggle the display - uncomment the next line for a basic "accordion" style
//$('.toggle').hide();$('a.toggleLink').html(showText);
$(this).parent().next('.toggle').toggle('slow');

// return false so any link destination is not followed
return false;

});
});

Section one: a div with a paragraph

You can show/hide an entire div by giving it a class of «toggle». Links and other child elements will work fine too. The element directly before this one is a heading, so it gets a show/hide link appended.

Section two: single paragraph

A single paragraph can be hidden by giving it a class of toggle too. I can’t help but be impressed by how easy it is to use jquery — even for someone with limited programming and javascript experience like me. Again, the preceding element is a heading.

Now: a list

  • You can even hide a list
  • Just give the <ul> the toggle class
  • This time the preceding element is a paragraph
  • Подсмотрел тут

Несколько блогов на одном движке вордпресса.

Уже писал про скрипт массовой установки вордпресса, но вот появилось более оптимальное решение, как это сделать. При установке 100 штук вп моим скриптом, занимается очень много места на сами дистрибутивы + логи, поэтому найти решение как спасти интернеты дисковое пространство.
kretin015 Read On…

Небольшой хак для навигации

Немного подправил свой код постраничной навигации для вп. Теперь выводится название месяца, если листать архивы и название категории, если листать категорию.
[audio:http://alexvolkov.ru/wp-content/uploads/2009/09/70c7b985a0e0.mp3]

<?php if(!is_single()){?>                                                         
 <?php                                                                   
 $max_page = $wp_query->max_num_pages;                             
 if(empty($paged) || $paged == 0) {                                
 $paged = 1;                                               
 }                                                                 
 ?>                                                                      
<div id="alt_nav">                                                                
 <div>                                                           
<?php if(!is_paged()){ ?>                                                         
<?php if(is_category()){  single_cat_title(); }?>                                 
<?php if(is_archive()){  the_time('F'); }?>                                       
 <?php } else { ?>                                                          
 Page <?php echo $paged; }?></div>                                     

 <ul id="mycarousel">                               
 <?php
 for($i=1; $i<$max_page+1; $i++){
 if($i == $paged){ ?><li><?php echo $i;?></li>
 <?php } else { ?>
 <li><a href="<?php echo clean_url(get_pagenum_link($i));?>"><?php echo $i;?></a></li>
 <?php } }?>
 </ul>
</div>
<?php }?>

У Neolota заметил полезную штучку — подсказки по вп в пдф.

Календарь в стиле iCal для архивов в wordpress

Давно пылится в черновиках красивый примерчик для календаря. В оригинале календарь под хтмл, я приладил для вордпресса, на страницу архивов по месяцам.
Вот тут можно посмотреть календарь в действии, скрин
calendar Read On…

Критическая уязвимость в wordpress

На секлабе проскальзывала новость о том, как удаленно скинуть пароль админа в вп.
Если кратко, то вот так:

wp-login.php?action=rp&key[]=

И вот уже червячок появился.
Что делает. Подставляет свой код, расположенный на другом сервере и выполняет его. Уязвимы версии до 2.8.4

Проверяемся

Беглый осмотр.
Если все ссылки или фид стали со странными дополнениями вида

eval(base64_decode($_SERVER[HTTP_REFERER]))

или вроде, в админке в разделе пользователи появилась такая картина
wp-hacked, т.е. пользователей два, а вверху показывается три, это не глюк вп, это хитрый яваскрипт скрывает третьего пользователя от вас. На скрине и второй пользователь тоже через дырку добавлен ))
Далее проверяем на иньекцию в базе:

grep -H -r “eval(base64_decode” /var/lib/mysql
grep -H -r “var setUserName = function” /var/lib/mysql

Если есть совпадение, то значит база заражена. Также можно проверить папки на инлюд функции:

grep -r -i "function gpc_" ./*

У себя три блога нашел взломанных. Проверить наличие левых администраторов в блоге

Лечимся.

  • Правим пермалинки.
  • Далее из таблицы wp-usermeta.php запоминаем все id юзеров с meta_key — ‘first_name’.
  • Потом сносим их из wp_users.
  • Удаляем их также и из wp-usermeta.php

Шорткоды для вордпресса.

Шорткоды (англ.shortcodes) это короткие коды для вызова функций. Функции могут быть в теме, можно написать самому. Удобство заключается в том, что не надо писать в шаблон кучу строк кода, достаточно кинуть файл functions.php и подключать нужные функции простым вызовом макроса [function]. Read On…

WordPress и memcache 2

[audio:9d179c38ffe0.mp3]
Первая часть тут была.
Написал я тогда как сделать, а сам так и не сделал и результатов не посмотрел, насколько сильно помогает memcache для вп.
Кратко, для чего нужен memcache: при определенной нагрузке, вордпресс начинает генерить очень много запросов и завешивает базу. Меня когда одни редиски досили, первое, что отвалилось так это база. Не могу установить соединение с базой данных — частенько выдает вордпресс. Memcached кеширует запросы к базе, тем самым снимая ее с БД (и перекладывая на оперативку 🙂 )
Также я изначально отказался от плагинов, например batcache. Как установить плагин итак все знают.
Read On…

css.php