编辑:多亏了@mozboz,我找到了解决这个问题的方法。这篇文章已经更新,以反映我最初是想做什么,以及我现在正在做什么。
我正在开发一个插件,它创建一个自定义帖子类型,向其中添加一些元字段,然后以特定格式显示该元信息。元字段用于YouTube链接和mp3链接,插件显示这些链接的选项卡式内容(第一个选项卡是嵌入式YouTube播放器,第二个选项卡是嵌入式音频播放器,第三个选项卡是mp3的下载链接)。它在二十二十个主题上效果很好,但在我尝试过的其他主题上都没有。这是我的原始代码:
function my_custom_post_type_the_post($post_object)
{
// The post object is passed to this hook by reference so there is no need to return a value.
if(
$post_object->post_type == \'my_custom_post_type\' &&
( is_post_type_archive(\'my_custom_post_type\') || is_singular(\'my_custom_post_type\') ) &&
! is_admin()
) {
$video = get_post_meta($post_object->ID, \'my_custom_post_type_video_url\', true);
$mp3 = get_post_meta($post_object->ID, \'my_custom_post_type_mp3_url\', true);
$textfield = get_post_meta($post_object->ID, \'my_custom_post_type_textfield\', true);
// Convert meta data to HTML-formatted media content
$media_content = $this->create_media_content($video, $mp3, $bible);
// Prepend $media_content to $post_content
$post_object->post_content = $media_content . $post_object->post_content;
}
}
add_action( \'the_post\', \'my_custom_post_type_the_post\' );
在这个函数的末尾,我使用print\\u r($post\\u content)来验证条件是否按预期工作,以及$post\\u对象是否包含我所期望的内容。出于某种原因,《二十二零》主题将显示$media\\u内容,但对于其他主题,它仍然缺失。
我决定,也许是我误用了;“\\u post”;钩我试图修改我的插件以使用;\\u内容“;钩子代替了,这让它起作用了:
public function my_custom_post_type_the_content($content_object)
{
global $post;
if(
$post->post_type == \'my_custom_post_type\' &&
( is_post_type_archive(\'my_custom_post_type\') || is_singular(\'my_custom_post_type\') ) && ! is_admin()
) {
$video = get_post_meta($post->ID, \'my_custom_post_type_video_url\', true);
$mp3 = get_post_meta($post->ID, \'my_custom_post_type_mp3_url\', true);
$textfield = get_post_meta($post->ID, \'my_custom_post_type_text_field\', true);
$media_content = $this->create_media_content($video, $mp3, $textfield);
$content_object = $media_content . $content_object;
}
return $content_object
}
add_filter( \'the_content\', \'my_custom_post_type_the_content\');
请注意$content\\u object“;传递给函数的不是通过引用传递的,因此必须返回它。
有一件事没有解决,那就是使用这种方法,帖子的归档列表会剥离所有HTML,这样我的媒体对象就会从归档列表中消失。在我的例子中,我决定不解决这个问题,因为我决定在归档页面上为多篇文章加载所有这些媒体对象会对页面加载次数产生太大的负面影响。
再次感谢您的帮助!