plamar

Хук на wp insert post

Публикую в WordPress блог из десктопной проги на C# через XMLRPC. В классе, который использую не нашел возможности проверить перед публикацией, присутствует ли уже пост с таким названием или нет. Поэтому хочу реализовать эту функцию на стороне самого блога. То есть мне нужно привязаться к wp insert post и перед публикацией проверять есть ли уже пост с таким названием в базе. Если есть, то публикацию отменять. Подскажите, как это сделать.

Как сделать счетчик загрузок файла

В папку uploads загружен файл. Ссылка на файл есть в посте (чтобы загружали). Как можно контролировать количество загрузок файла? (Уточню, работаю под WordPress 3.0)

Посты из определенной категории

Имеется следующий запрос для радномного получения 10 постов.

$q = "SELECT ID, post_title, post_content,post_excerpt, post_date, comment_count FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND ID != $post->ID ORDER BY RAND() 10";

Как, используя ID категории, которая нас интересует, преобразовать этот запрос, чтобы получать посты только из определенной категории?

Голосование за комментарии

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

Большой сайт на WordPress

Есть большой новостной WordPress сайт. Содержит порядка 40к записей. Планируемая посещаемость от 1к посетителей в день. Подскажите, какие можно принять меры для избежания зависаний и тормозов сервера при подобной нагрузке.

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

Серверный крон и плагин.

Подскажите, как мне запустить функцию, описанную в файле WordPress плагина из под серверного крона. Заметьте, что функция использует глобальные переменные самого WP:

global $wpdb;

Нужна помощь спеца по wordpress

В данной теме – http://forum.searchengines.ru/showthread.php?t=470449 – описывал возникшую у меня проблему. Сейчас ее точно локализовал и вкратце опишу.

При добавлении поста, у которого дата публикации в будущем (при этом неважно что в поле post_status – publish или future) с помощью wp_insert_post, происходит резкий скачок потребления памяти скриптом. Сейчас приведу дерево вызова функция для локализации скачка:

wp_insert_post-> wp_transition_post_status-> _future_post_hook-> wp_schedule_single_event-> _set_cron_array( $crons )-> update_option( 'cron', $cron );

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

Мне нужен человек, который исправит данную проблему. По оплате – в зависимости от потраченного времени, готов заплатить 10-20 WMZ.

Пишите в асю 435268826.

wp_insert_post вызывает Fatal Error

Есть плагин для вордпресса, в общих словах – плагин пасрер, парсит целые сайты. За счет этого (если сайт большой) со временем накапливается значительный объем информации об уже обработанных и еще не обработанных страницах. Для запуска php-парсера из админки плагина используется аякс. Между клиентским скриптом и аякс приложением регулярно передаются данные (в частности об обработанных и необработанных страницах).

Сначала проблема была в том, что когда данные становились слишком большими, то аякс их терял (ведь есть максимальный допустимый предел передачи методом POST данных). Потом я ввел возможность сохранения надмерной порции промежуточных данных в файл И эта проблема отпала. Но начал вылазить другой баг:
В плагине используется функция wp_insert_post для вставки нового поста. Собственно говоря она вызывается после обработки каждой страницы парсенного сайта (точнее почти каждой, но это сейчас не суть). Так вот wp_insert_post на свой N-ый вызов теперь вызывает фатальную ошибку:

Fatal error: Allowed memory size of 73400320 bytes exhausted (tried to allocate 1966080 bytes) in /home2/…/wp-db.php on line 589

причем, если wp_insert_post не вызывается (то есть я его просто закоментировал), то ничего не происходит, и обработка продолжается.

Я поотлаживал и выяснил, что скачок потребления памяти происходит именно в wp_insert_post (точнее в wp_transition_post_status), причем это сильнее проявляется, когда пост планируется (то есть его статус не publish, а future. Чтобы стало понятнее, где происходит скачок, вот смотрите как я отлаживал:

function wp_transition_post_status($new_status, $old_status, $post) {

    echo memory_get_peak_usage();echo "-".$new_status."MET0<br>";

    do_action('transition_post_status', $new_status, $old_status, $post);

    echo memory_get_peak_usage();echo "-".$new_status."MET1<br>";

    do_action("${old_status}_to_$new_status", $post);

    echo memory_get_peak_usage();echo "-".$new_status."MET2<br>";

    do_action("${new_status}_$post->post_type", $post->ID, $post);

    echo memory_get_peak_usage();echo "-".$new_status."MET3<br>";
}

Результат:
18747184-futureMET0
24676648-futureMET1
24676648-futureMET2
38540144-futureMET3

Теперь вопрос к специалистам по wordpress: как переопределить эту функцию (wp_transition_post_status), чтобы она могла правильно запланировать пост, но не вызывала эти функции по умолчанию?

Как сделать свою сборку Wp

Мне нужно сделать готовую сборку WP с несколькими установлеными настройками (вроде ЧПУ) и несколькими активированными плагинами. Подскажите как сделать?

Небольшое уточнение: думаю, поможет запуска на этапе установки следующий код:

activate_plugins(array('rus-to-lat/rus-to-lat.php'));

global $wp_rewrite; if(is_object($wp_rewrite)) { $wp_rewrite->set_permalink_structure("/%year%/%monthnum%/%postname%/"); $wp_rewrite->flush_rules(); }
else update_option('permalink_structure','/%year%/%monthnum%/%postname%/');

но вопрос в том, куда это добавить?

Проблемы с запароленной страницей

На странице редактирования страницы справа вверху щёлкнул по "видимость" и нажал "защищено паролем", ввел пароль.

Страница паролем защитилась, но нарисовалось две проблемы:

1. Когда пользователь попадает на запароленную страницу, он видит текст: "The post is password protected. To view it please enter password below". Ниже под полем ввода пароля текст: Enter your password to view comments. ВОПРОС – где поменять эти тексты на нужные мне (искал в файлах темы – нигде не смог найти)

2. Когда пользователь один раз вводит пароль, то при последующих заходах на страницу пароль вводить не нужно (короче, входит как на обычную незапароленную страницу). Мне нужно, чтобы при каждом повторном входе запрашивался пароль. ВОПРОС – как это реализовать?

Anonymous
Отправить
Ответ на: