Поддержка Плагины Какой хук использовать?

  • Пишу плагин. Суть — есть страничка с динамическим контеном, который подгружается из файла. Как и какой повесить хук, чтоб при загрузке страницы её содержимое подгружалось из моего файлика?

    пытаюсь сделать так

    function my_user_part () {
    
    	if(is_single(16)) {
    
        		$id = 16;
    
        		$page = get_page($id);
    
        		$page->post_content = get_data();
    		wp_publish_update( $page );
        	}
    }
    
    add_action('wp_loaded', 'my_user_part');
Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Не совсем понятно, что хотите, но хук 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. и еще эта кавычка долбанная… теперь все срабатывает как нужно. Еще раз спасибо!

    но как сделать проверку, что именно эту страницу запросил пользователь, и только в тот момент отдавать ему этот динамический контент.

    Проще лёгкого!
    Начинаем отсюда.

    Или первая попавшая ссылка из гугла.

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Какой хук использовать?» закрыта для новых ответов.