我正在尝试将发布的行为更改为Apple New Wordpress plugin。我的主题使用自定义字段进行视频嵌入,但插件无法识别该内容。我试图将元数据附加到Apple News的帖子开头。这是我的代码无效:
function add_post_meta_content($content) {
$meta = get_post_meta( get_the_ID(), 'csco_post_embed', true );
return .$meta.$content;
}
add_filter('apple_news_exporter_content_pre', add_post_meta_content);
apply_filters( 'apple_news_exporter_content_pre', $post->post_content, $post->ID );
如果我将代码更改为以下内容:
function add_post_meta_content($content) {
$meta = get_post_meta( get_the_ID(), 'csco_post_embed', true );
return 'Print this content before the post'.$meta.$content;
}
add_filter('apple_news_exporter_content_pre', add_post_meta_content);
apply_filters( 'apple_news_exporter_content_pre', $post->post_content, $post->ID );
它将“在帖子前打印此内容”附加到帖子的开头而没有问题。我在这里错过了什么?
答案 0 :(得分:0)
插件已向您的过滤器发送$post->ID
,因此无需致电get_the_ID()
。
试试这段代码:
function add_post_meta_content($content, $post_id) {
$meta = get_post_meta( $post_id, 'csco_post_embed', true );
return 'Print this content before the post'.$meta.$content;
}
add_filter('apple_news_exporter_content_pre', add_post_meta_content, 10, 2);
-
如果这不起作用,请确保在csco_post_embed
项下的数据库元表中确实保存了一些内容。确认这一点的简便方法是打开数据库并快速查询:
SELECT *
FROM wp_postmeta
WHERE post_id = ENTER_YOUR_POST_ID_HERE AND meta_key = 'csco_post_embed';
答案 1 :(得分:0)
真棒!你让我99%的路程。不得不返回oembed以使视频正常工作。这是最后的代码,以防其他人来看。
function add_post_meta_content($content, $post_id) {
$meta = wp_oembed_get( get_post_meta( $post_id, 'csco_post_embed', true ) );
return $meta.$content;
}
add_filter('apple_news_exporter_content_pre', add_post_meta_content, 10, 2);