如何在WordPress快捷码中传递参数?

时间:2021-02-22 作者:HNPSK

一切正常,它使用下面的代码显示当前页面的注释,并使用此短代码[wpdiscuz\\u comments]。

function my_wpdiscuz_shortcode() {
$html = "";
if (file_exists(ABSPATH . "wp-content/plugins/wpdiscuz/themes/default/comment-form.php")) {
ob_start();
include_once ABSPATH . "wp-content/plugins/wpdiscuz/themes/default/comment-form.php";
$html = ob_get_clean();
}
return $html;
}
add_shortcode("wpdiscuz_comments", "my_wpdiscuz_shortcode");
我试图使用下面的短代码传递id参数。但它不起作用。

[wpdiscuz_comments post_id="22"]
其中;post\\U id“;参数仅获取post id 22的注释。这样我就可以获取特定帖子的评论。

谁能帮我一下,或者让我知道如何使用上面的代码通过shortcode传递参数?谢谢

1 个回复
SO网友:Pat J

作为的文档add_shortcode() 状态

默认情况下,每个短代码回调传递三个参数,包括属性数组($atts)、未设置的短代码内容或null($content),最后是短代码标记本身($shortcode\\u标记),按此顺序传递。

使用shortcode_atts() 定义允许哪些属性并为这些属性设置默认值。

function my_wpdiscuz_shortcode( $_atts ) {
    $defaults = array(
        \'post_id\' => \'\',
    );
    $atts = shortcode_atts( $defaults, $_atts );
    // Confirm that $post_id is an integer.
    $atts[\'post_id\'] = absint( $atts[\'post_id\'] );
    // ----
    // Now you can use $atts[\'post_id\'] - it will contain
    // the integer value of the post_id set in the shortcode, or
    // 0 if nothing is set in the shortcode.
    // ----
    $html = "";
    if (file_exists(ABSPATH . "wp-content/plugins/wpdiscuz/themes/default/comment-form.php")) {
        ob_start();
        include_once ABSPATH . "wp-content/plugins/wpdiscuz/themes/default/comment-form.php";
        $html = ob_get_clean();
    }
    return $html;
}
add_shortcode("wpdiscuz_comments", "my_wpdiscuz_shortcode");
注意,如果post_id 未在快捷码调用中设置,它将默认为0.