我正在尝试访问帖子上的信息,这样我就可以获得帖子标题和帖子内容,这样我就可以生成相应的OG标签,放在标题中。问题是该信息仅在loop\\u结束后可用。在那个动作发生后,我怎样才能插入头部呢?
编辑:下面是正在使用的代码
<?php
/**
* *snip*
* standard plugin info
* *snip*
*/
$jobTitle ="";
$jobDescription ="";
function getJobInfo() {
global $jobTitle,$jobDescription;
if (is_single()) {
$jobTitle = get_jobs()->get("job_title");
$jobDescription = get_jobs()->get("job_description");
}
}
add_action("loop_end", \'getJobInfo\'); // the info is only available on this hook since this is part of a plugin that modifies some pages.
function generateOGtag(){
global $jobTitle,$jobDescription;
echo "<meta property=\'og:title\' content=\'$jobTitle\'>\\n";
echo "<meta property=\'og:title\' content=\'$jobDescription\'>\\n";
}
add_action("wp_head", \'generateOGtag\');
根据wordpress插件参考,它确实指出
wp_head
在之前加载
loop_end
那么,我如何从
loop_end
进入的操作
wp_head
行动
最合适的回答,由SO网友:s_ha_dum 整理而成
因为您使用的插件在loop_end
钩子,将信息输入标题将很棘手。我只能想到两种方法:
页面加载后,使用Javascript将数据插入页眉。我不知道这是否有效。我不确定是否会尊重“og”标题在页面加载之前运行一个循环,尽早获取数据。我没有测试过,但我想它也是这样的:/ol>
function generateOGtag(){
if (is_single()) {
global $wp_query;
if (have_posts()) {
while (have_posts()) {
the_post();
// no idea if your plugin needs anything else here
}
}
$jobTitle = get_jobs()->get("job_title");
$jobDescription = get_jobs()->get("job_description");
echo "<meta property=\'og:title\' content=\'$jobTitle\'>\\n";
echo "<meta property=\'og:title\' content=\'$jobDescription\'>\\n";
wp_reset_query();
wp_reset_postdata();
}
}
add_action("wp_head", \'generateOGtag\');
这显然是一个劳动密集型过程,因为代码将运行两次。