【问题标题】:Unable to dynamically modify content of a page in WordPress无法在 WordPress 中动态修改页面内容
【发布时间】:2020-10-13 11:59:25
【问题描述】:

我需要根据查询字符串更改特定页面上的一些opengraph 属性。

我尝试使用基于functions.php 中已安装插件的一些过滤器:

function update_the_og_title($content) {
  if(is_page('the-page')) {
     // Modify the tags
  } else{
    // Do nothing
  }
}

但是,我很快发现functions.php 无法检测到使用is_page() 的页面。我该怎么办?

我还能如何在 WordPress 中动态修改页面的 opengraph 标签?

谢谢。

【问题讨论】:

  • 首先你需要知道你的OG标签来自哪里。他可能来自模板/插件/钩子。然后 is_page 应该在函数中工作,但它可能不依赖于您用于 update_the_og_title 的钩子(顺便说一句,您应该将函数与钩子/动作一起使用,否则 - 如果不是这种情况 - 它永远不会被调用)。

标签: php wordpress facebook-opengraph


【解决方案1】:

您可以使用 is_page 但不能在最初包含 functions.php 时使用。您要做的是使用hook:在 WP 进程中的特定点运行您的代码:

function update_the_og_title() {
    $id = get_the_id(); // 
    if(is_page($id)) {
        // Get your content here, maybe from metadata?
        // Modify the tags
    } else{
        // Do nothing
    }
}

add_action('wp', 'update_the_og_title');

Wordpress action reference

您可以通过多种方式获取页面 ID,包括使用 $post variable,具体取决于您的要求。

【讨论】:

  • 谢谢@David。 is_page()钩子的检测是特定的吗?例如,我尝试了来自两个不同插件的钩子。一个能够更改内容,而另一个则不能。它们都是为了修改页面输出。
  • 它只需要在正确的时间运行。如果它是动态的,那么它需要在当前页面上运行(我假设),这意味着它需要在 Wordpress 用于构建页面/帖子对象的代码之后运行。 'wp' 钩子是执行此操作的正确位置。它在对象设置之后运行,但在显示任何内容之前。
猜你喜欢
  • 2022-08-17
  • 2019-01-10
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 2013-05-29
  • 1970-01-01
相关资源
最近更新 更多