如何更改 Wordpress WP_Post post_content 并通过插件呈现?
How to change Wordpress WP_Post post_content and render via plugin?
我正在尝试通过插件在 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()
中使用了错误的钩子???
求助!
好的,我用错了钩子。我实际上需要改用过滤器
首先,在 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;
}
见树不见林!
我正在尝试通过插件在 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()
中使用了错误的钩子???
求助!
好的,我用错了钩子。我实际上需要改用过滤器
首先,在 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;
}
见树不见林!