尝试使用带有短代码和参数的get_post显示the_content



我正在尝试创建一个短代码,从特定的帖子中提取内容。例如:[show_my_content show id="90"]

这是我的密码。但有些地方出了问题:

// Creating Shortcode
function show_my_content_shortcode ($attr, $content = null){

global $post;

// Define Shortcode Attributes
$shortcode_args = shortcode_atts(
array(
'show-id'     => '',
), $attr);    
$showcontent = $shortcode_args['show-id'];
$post = get_post($showcontent);
$output = apply_filters( 'the_content', $post->post_content );
return $output;         
}
add_shortcode( 'show_my_content', 'show_my_content_shortcode' );
?>

但是,如果我替换以下变量的值:

$showcontent = $shortcode_args['show-id'];

有了帖子ID,它就可以了

$showcontent = 90;

然而,这是毫无意义的,因为我显然希望能够在短代码的参数中输入ID,而不是直接在代码中输入。

我还试图删除我的$showcontent变量,并改为这样做,但这也不起作用:

$post = get_post($shortcode_args['show-id']);
$output = apply_filters( 'the_content', $post->post_content );
return $output; 

我不明白,为什么要在短代码中应用过滤器?shortcode函数应该只返回值,shortcode占位符将被替换。

以下内容就足够了:

add_shortcode('show_my_content', function ($attr) {
// Define Shortcode Attributes
$shortcode_args = shortcode_atts(['show-id' => ''], $attr);
$content = get_post_field('post_content', $shortcode_args['show-id']);
return $content;         
});

如果您愿意,还可以阅读有关快捷代码的文档:https://codex.wordpress.org/Shortcode_API

相关内容

  • 没有找到相关文章

最新更新