Не совсем понятно, что хотите, но хук wp_loaded
это слишком поздно. И что это за функция wp_publish_update()
??
—
Если вам надо подменить контент во время генерации страницы (после чтения из БД), то используйте фильтр the_content
, например так:
(благо, он есть — http://core.trac.wordpress.org/browser/tags/3.5/wp-includes/post-template.php#L164 )
function wikicms_change_content_on_the_fly( $content ) {
if ( is_single('16') )
$content = 'Мой новый контент';
return $content;
}
add_filter( 'the_content', 'wikicms_change_content_on_the_fly' );
Спасибо за ответ! Ситуация проясняется. Попробую подробней объяснить, что и как происходит. Есть файл с расписанием футбольных матчей, он может в течении дня меняться несколько раз, потому я решил автоматизировать этот процесс — подгружать контент из файла именно в тот момент, когда именно эту страницу запрашивает пользователь, в моем случае страницу с id=16. wp_publish_update() — это какой-то бред, согласен, недосмотрел. Видимо после многочисленных редакций исходников осталось. Ранее использовал wp_update_post(). Но не суть.
function my_user_part () {
if(is_single(16)) {
die(var_dump('yep!'));
}
}
add_action('wp_loaded', 'my_user_part');
Ранее пробовал так, но не срабатывало. Теперь понятно почему. Еще раз спасибо за объяснение.
Аа, я раз тоже использовал динамическую «подмену-добавку», не знаю, как вы, но я использовал страничку с этого же сайта (она тоже постоянно менялась), поступал так:
$page_data = get_page($id, ARRAY_A); //получаем страницу по $id
$content = $page_data['post_content']; // "выдергиваем" контент из нее
function my_user_part () {
if(is_single('21')) {
die(var_dump('tut'));
}
}
add_filter('the_content', 'my_user_part');
не работает( уже не знаю что делать
Помнится, был такой плагин — ушки. Не знаю будет ли работать сейчас, но думаю разобраться с ним труда не составит.
Кроме того, есть много разных решений для «вставки файла в страницу». Например плаг типа insert-php и инклуд.
Или свой шаблон страницы (я бы наверное использовал это вариант).
Или свой шаблон страницы (я бы наверное использовал это вариант).
можно и так, но как сделать проверку, что именно эту страницу запросил пользователь, и только в тот момент отдавать ему этот динамический контент.
Оуууу йес! Все получилось! Большое всем отвечающим спасибо! По собственно невнимательности правил неактивный плагин, когда досмотрел, активировал — наткнулся на ошибку — не закрыл кавычки) Голова моя дубовая) А правил в стандартном редакторе для плагинов, который в вордпресс)) Ну натупил так натупил))
не работает( уже не знаю что делать
Вы путаете хуки «действия» add_action
и фильтры add_filter
Существенная разница у них в том, что хук действия срабатывает в указанный момент загрузки/обработки/вывода и т.п.
например:
Если пользователь загружает пост с ID = 16, то в момент загрузки футера, отсылать письмо:
function wikicms_send_email() {
if ( is_single('16') ) //если пост = 16, то
//wp_mail(... отсылаем письмо
}
add_action( 'wp_footer', 'wikicms_send_email' ); //хук на wp_footer
а фильтр — это модификация чего-либо до/после записи/чтения в/из базы данных или переменных, следовательно, нам надо что менять и надо измененное вернуть, в моем примере выше — мы взяли $content
и вернули измененный $content
для указанного поста.
вот, вот изначально и была проблема в этом — я вешал на add_action, а нужно было на add_filter. и еще эта кавычка долбанная… теперь все срабатывает как нужно. Еще раз спасибо!
но как сделать проверку, что именно эту страницу запросил пользователь, и только в тот момент отдавать ему этот динамический контент.
Проще лёгкого!
Начинаем отсюда.
Или первая попавшая ссылка из гугла.