Как изменить пост_контент Wordpress WP_Post и сделать с помощью плагина? - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь построить динамическую страницу в Wordpress через плагин.Я зарегистрировал действие следующим образом:

add_action('the_post', 'createDynamicPage');

Это работает, и функция вызывается, как и ожидалось.Затем я получаю объект WP_Post и проверяю его следующим образом:

public static function createDynamicPage(WP_Post $post)
{
    if (is_page('my-dynamic-page')) {
        // Do the processing etc
        $post->post_title = 'My New Title';
        $post->post_content = $whatIProcessedAbove;
    }
    return $post;
}

Изменение свойства post_title отражается на странице, а содержимое - нет.

ИтакРешение, которое я придумал, состояло в том, чтобы изменить объект WP_Post, передать его в wp_update_post() и затем принудительно перезагрузить страницу.

Это работает, и содержимое страницы такое, каким оно должно быть, ноэто определенно не правильный способ сделать это.Во-первых, если кто-то еще попадет на эту страницу между моим первым попаданием и перезагрузкой страницы из БД, я увижу их содержание.

Итак, как же мне получить изменения, которые я внесу вpost_content свойство сразу быть видимым?Возможно, я использовал неправильный хук в add_action() ???

Help!

1 Ответ

0 голосов
/ 08 июня 2018

ОК, я использовал не тот крючок.Мне действительно нужно было использовать фильтры вместо

Сначала зарегистрируйте фильтр на крюке the_content:

add_filter('the_content', 'createDynamicContent');

Теперь измените содержимое на своей странице:

public static function createDynamicContent(string $content)
{
    if (is_page('my-dynamic-page')) {
        // Do the processing etc
        $content = $whatIProcessedAbove;
    }
    return $content;
}

Не видел дерева за деревьями!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...