Случилось, что нужно было протестировать кое-что на WordPress и нужно было, чтобы блог содержал много информации, большое количество постов и комментариев. Решил быстренько написать пару функций для быстрого заполнения блога контентом. В будущем думаю еще пригодится. Ну, а так как пригодится может не только мне, выкладываю результаты тут.
Вот код, ставить который нужно в любимый function.php:
/*
'ID' => //[ <post id> ] Are you updating an existing post?
,'comment_status' => //[ 'closed' | 'open' ] 'closed' means no comments.
,'ping_status' => //[ 'closed' | 'open' ] 'closed' means pingbacks or trackbacks turned off. def:get_option('default_ping_status')
,'post_author' => //[ <user ID> ] The user ID number of the author. def:$user_ID
,'post_category' => //[ array(<category id>, <...>) ] Add some categories.
,'post_content' => //[ <the text of the post> ] The full text of the post.
,'post_date' => //[ Y-m-d H:i:s ] The time post was made.
,'post_date_gmt' => //[ Y-m-d H:i:s ] The time post was made, in GMT.
,'post_name' => //[ <the name> ] The name (slug) for your post
,'post_title' => //[ <the title> ] The title of your post.
,'tags_input' => //[ '<tag>, <tag>, <...>' ] For tags.
,'post_content_filtered' => '' // def:''
,'post_parent' => //[ <post ID> ] Sets the parent of the new post. def:
,'post_excerpt' => //[ <an excerpt> ] For all your post excerpt needs. def:
,'menu_order' => //[ <order> ] If new post is a page, sets the order should it appear in the tabs. def:
,'post_status' => //[ 'draft' | 'publish' | 'pending'| 'future' | 'private' ] Set the status of the new post. def:draft
,'post_type' => //[ 'post' | 'page' ] Sometimes you want to post a page. def:post
,'to_ping' => //[ ? ] ? def:
,'pinged' => //[ ? ] ? def:
,'guid' => '' // def:''
,'post_password' => //[ ? ] password for post? def:
//*/
//Функция заполнения контента
//?fill_db=3000&cats=1|3&tags=tag1|tag2|tag3
function fill_db_with_posts(){
if( !isset($_GET['fill_db']) ) return;
$limit = (int) $_GET['fill_db'];
if(!$limit || !is_numeric($limit)) $limit=50;
$cats = $_GET['cats'] ? $_GET['cats'] : '1';
$tags = $_GET['tags'] ? $_GET['tags'] : '';
//запускаем цикл
for($i=1; $i<=$limit; $i++){
$rand = (string) rand(1,99999);
$content = '';
for($g=0; $g<30; $g++)
$content .= "очередная запись под случайным номером: $rand . ";
$post_date = get_random('2009|2010').'-0'.rand(1,9).'-'.rand(10,30).' 23:25:59';
$post = array(
'comment_status' => get_random('closed|open')
,'ping_status' => get_random('closed|open')
,'post_category' => array( get_random($cats) )
,'post_title' => "Запись со случайным номером $rand"
,'post_content' => $content
,'post_date' => $post_date
,'tags_input' => get_random($tags)
,'post_status' => 'publish'
);
$postid = wp_insert_post( $post );
//if($postid) echo $postid.", ";
//else echo "error";
flush();
}
return;
}
/*
$data = array(
'comment_post_ID' => 1,
'comment_author' => 'admin',
'comment_author_email' => 'admin@admin.com',
'comment_author_url' => 'http://',
'comment_content' => 'content here',
'comment_type' => ,
'comment_parent' => 0,
'user_id' => 1,
'comment_author_IP' => '127.0.0.1',
'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
'comment_date' => $time,
'comment_approved' => 1,
);
//*/
function fill_db_with_comments(){
if( !isset($_GET['fill_db_comments']) ) return;
$limit = (int) $_GET['fill_db_comments'];
if(!$limit || !is_numeric($limit)) $limit=50;
global $wpdb;
$IDs = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE post_status='publish' AND post_type='post' AND comment_status='open' ORDER BY rand() LIMIT 150", ARRAY_A);
foreach($IDs as $v) $IDsfix[] = $v['ID'];
//запускаем цикл
for($i=1; $i<=$limit; $i++){
$rand = (string) rand(1,99999);
$content = '';
for($g=0; $g<5; $g++)
$content .= "комментарий: $rand . ";
$post_date = get_random('2009|2010').'-0'.rand(1,9).'-'.rand(10,30).' 23:25:59';
$post = array(
'comment_post_ID' => array_rand($IDsfix)
,'comment_author' => 'commentator name'
,'comment_author_email' => 'admin@admin.com'
,'comment_author_url' => ''
,'comment_content' => $content
// ,'comment_type' =>
// ,'comment_parent' => 0
// ,'user_id' => 1
,'comment_author_IP' => '127.0.0.1'
,'comment_agent' => 'Opera 10.0'
,'comment_date' => $post_date
,'comment_approved' => 1
);
$postid = wp_insert_comment( $post );
//if($postid) echo $postid.", ";
//else echo "error";
flush();
}
return;
}
function get_random($data=''){
$arg = explode('|', $data);
if(count($arg)==1)
return $arg[0];
$n = rand(0, count($arg)-1);
return $arg[$n];
}
//вызов
fill_db_with_posts();
fill_db_with_comments();
Объяснять подробно не буду что и зачем. В двух словах о том, как это работает:
Чтобы заполнить блог постами, дописываем в УРЛ, нечто такое
?fill_db=3000&cats=1|3&tags=tag1|tag2|tag3
где, 3000 - сколько постов добавятся. cats=1|3 - посты будут случайно добавляться в категорию 1 или 3. tags=tag1|tag2|tag3 - постам будут приписана одна из меток (использовать кириллицу нельзя).
Чтобы заполнить комментариями, дописываем в УРЛ, нечто такое
?fill_db_comments=3000
Комментарии будут "оставляться" к случайным постам, открытым для комментирования. 3000 - количество комментариев.
Что касается того, где это можно применить? Где угодно - заполняем блог и тестируем его скорость, при 100к постов явные "болячки" всплывают на ура. Тестить можно шаблоны, функции и отдельные запросы к БД или что-нибудь еще.
Это все.
return;
Если вам нужно иметь свой сайт и вы не знаете с чего начать, то оглянитесь — сайт это продукт интернет структуры и начинать надо разумеется с интернета, точнее с прочтения соответствующих статей. Создание сайтов процесс творческий и почти всегда индивидуальный, несмотря на обилие разных движков под сайты, каждый хороший сайт требует немало денежных, умственных и душевных затрат.
- Предыдущие по меткам
- Предыдущие записи
- Обрезка текста и/или замена стандартной функции the_excerpt() ← 11.Апр.2010 // 70
- Избавляемся от лишних обращений к данным ← 2.Апр.2010 // 22
- Полезный хак для WordPress, если сайт дорабатывается на локалке ← 1.Апр.2010 // 11
- Класс WordPress для работы с Базой Данных (wpdb сlass) ← 22 Декабрь 2010 // 19
- Оптимизация производительности WordPress за счет постоянных ссылок (практика) ← 25 Ноябрь 2010 // 18
- Как лучше удалить слово category из постоянной ссылки (УРЛа) в WordPress ← 14 Ноябрь 2010 // 43
Очень интересная идея. Сегодня протестирую и посмотрим, что получится!
Интересно. При подходящем случае применю.
Ранее я использовал xml-файл, который предлагается в кодексе ВП для тестирования темы.
Я про такой файл что-то даже не знаю
Вот тут - http://codex.wordpress.org/Theme_Unit_Test#Test_Procedure
Попробовал, получил сбой Parse error: syntax error, unexpected T_DOUBLE_ARROW in /home/users1/...путь к папкам движка.../themes/wpthem/functions.php on line 2
Может я что то не так установил ? Можно разжевать ?
Пардон, нашел свою ошибку.
Извиняюсь за оффтоп - как сделать такую нумерацию в комментариях ВП как у вас?
Воспользоваться примерами из статьи Нумерация комментариев.
поделитесь плиз ссылочкой на плагин ваших комментов - очень нравится)
Это не плагин, это ручная работа. Плагин тут только кнопки: jQuery Comment Preview
от счас мы это дело и рипнем
Премного благодарен!