How to get post ID in a Page?

时间:2018-09-12 作者:Shikhar Mishra

我试图在一个页面中列出我的所有帖子(包含帖子内容)。所有内容都显示正确,但使用帖子id获取帖子中附件URL的音频播放器未显示。我正在使用以下代码获取帖子ID:-

global $wp_query;
$postID = $wp_query->$post->ID;
$file_id = get_post_meta( $post->ID, sound_s, true );
$fileUrl = wp_get_attachment_url($file_id);
$attr = array(
\'src\'      => $fileUrl,
\'loop\'     => \'\',
\'autoplay\' => \'\',
\'preload\'  => \'none\'
);
echo wp_audio_shortcode( $attr );
它在帖子本身中起作用,但当我尝试在页面中列出它时,帖子ID会显示页面ID。请帮我做这个。

1 个回复
最合适的回答,由SO网友:realloc 整理而成

您不应该直接使用globals。WordPress API中有一些很好的包装函数。如果要检索当前帖子或页面的ID,只需使用get_the_ID().

没有任何测试。。。您可以这样编写功能:

$file_id  = get_post_meta( get_the_ID(), \'sound_s\', true );
$file_url = wp_get_attachment_url( $file_id );

echo wp_audio_shortcode( [ \'src\' => $file_url ] );
我对您使用的插件了解不多,但为什么不循环浏览帖子列表:

$posts = get_posts();
foreach ( $posts as $item ) {
    $file_id  = get_post_meta( $item->ID, \'sound_s\', true );
    $file_url = wp_get_attachment_url( $file_id );

    echo wp_audio_shortcode( [ \'src\' => $file_url ] );
}

结束