我有一个插件,可以通过检查URL中的查询变量自动从新闻发布者加载文章。
如果请求了一篇文章,它会对此发布者进行AJAX调用,创建新的WP\\U帖子并将其加载到模板中。
我需要在这个页面中添加open graph元标记,我不知所措。
我的第一次失败尝试是一次普通尝试:
add_action( \'wp_head\', \'insert_fb_in_head\', 5 );
从函数。php的主题,我原本希望从我的构建帖子中获取信息,但事实证明
global $post
返回的
NULL
在这种特殊情况下。
所以我猜我的$post
稍后生成。
我检查过,在身体内添加og元不会让他们被Facebook发现。
我抓住救命稻草,试图从构建帖子的函数中调用该钩子,但这甚至没有触发。
在这种情况下,如何修改头部?我确信您将需要更多的代码,但我不太确定要提供什么代码。我会根据评论更新这篇文章。
更新:一些代码背景
我有几个public hooks 在插件中。
private function define_public_hooks() {
$plugin_public = new MyPlugin_Public( $this->get_plugin_name(), $this->get_version(), $this->get_public_name(), $this->get_endpoint_domain() );
$this->loader->add_action( \'wp_enqueue_scripts\', $plugin_public, \'enqueue_styles\' );
$this->loader->add_filter( \'query_vars\', $plugin_public, \'mp_virtualpage_query_vars\' );
$this->loader->add_action(\'loop_start\', $plugin_public, \'mp_display_post\');
//and then some more
}
在
display_post 功能:
public function mp_display_post($query) {
global $wp_query;
if (isset($query->query[\'virtualpage\'])) {
$mp_post = $this->mp_query_post($query->query[\'nda_id\'], false, true);
// replace the query with it
unset($query->posts);
$query->posts = array();
$query->posts[0] = $nd_post;
$query->post_count = 1;
}
}
概述
the post query:
public function mp_query_post($nda_id, $redirect = false, $adapt_url = false)
{
global $post;
$chars = array("/", "-", ":", ".");
$endpoint = $this->endpoint_domain . \'articles/\'. $nda_id;
$response = wp_remote_get($endpoint, $args);
$response_body = json_decode(wp_remote_retrieve_body($response));
$response_code = wp_remote_retrieve_response_code( $response );
if ($response_code == 200) {
//SUCCESS
$article = $response_body->article;
// create the post and fill up the fields
$new_post = new WP_Post((object)array(
//\'ID\' => $article->id,
\'post_title\' => $article->title,
\'post_content\' => $article->body,
//so on and so forth with all properties
));
} else {
//FAIL
$new_post = new WP_Post((object) array(
\'post_title\' => "Oops! We could not find this article",
//etcetera
));
}
return $new_post;
}