我试图通过插件在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()
???
帮助!
答案 0 :(得分:2)
好的,我使用了错误的钩子。我实际上需要使用过滤器
首先,在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;
}
看不见树木了!