Wordpress 短代码功能 returns 只有标题

Wordpress shortcode function returns only the title

我的问题是:尝试使用简单的短代码函数检索 the_content,它只检索标题。 即使应用其他过滤器,结果始终相同。

使用 [shortcodePage id=POST_ID] (int)

从小部件调用

结果:仅打印标题。 我尝试使用 'the_post_thumbnail' 更改过滤器并再次检索标题。

我很绝望:(

谢谢!!

您的简码功能有几处不正确,但主要是:

  1. 您正在使用 extract 但未使用 extract
  2. 中的任何内容
  3. $atts 是一个数组,而不仅仅是 id.
  4. 您正在使用 apply_filters('the_content')。这实质上会覆盖 apply_filter 中内置的 WP。您想使用 add_filter,但如您所见,这不是必需的。

这是根据您要执行的操作精简的简码:

function shtcode_Func( $atts ) {

    // set up default parameters. No need to use extract here.
    $a = shortcode_atts(array(
        'id' => ''
    ), $atts);

    // Use get_the_content, and pass the actual ID
    $content = get_the_content('','', $a['id'] );
    // This is the same
    $content = str_replace(']]>', ']]>', $content);
    // Return the content.
    return $content;
}

add_shortcode('shortcodePage', 'shtcode_Func');
Try to use like this:
function shtcode_Func( $atts = array() ) {

    // set up default parameters
    extract(shortcode_atts(array(
        'id' => '5'
    ), $atts));

    $content_post = get_post( $atts['id'] );
    ob_start();
    $content = $content_post->post_content;
    $content = apply_filters( 'the_content', $content );
    $content = str_replace( ']]>', ']]>', $content );
    echo $content;
    $str = ob_get_contents();

    ob_end_clean();

    return $str;
}

add_shortcode('shortcodePage', 'shtcode_Func');