快捷码在小部件中不起作用

时间:2015-11-05 作者:Yazmin

我创建了以下短代码:

function newsletter_signup_shortcode( $atts ) {
$post_type = get_post_type();

// Attributes
extract( shortcode_atts(
    array(
        \'location\' => get_permalink(),
        \'show_title\' => \'yes\',
    ), $atts )
);

// Return the unfiltered content if we\'re not on a post.
if ( $post_type != \'post\' ) {
    return $content;
}

ob_start();
?>

<!-- MailChimp Signup Form outputs here - code omitted for clarity -->

<?php
// Add the opt-in form after the post content.
return $content . ob_get_clean();
}
add_shortcode( \'newsletter_signup\', \'newsletter_signup_shortcode\' );
这在主页和博客帖子页面、帖子和边栏小部件中都非常有效。

但是,当我查看页面时,侧栏小部件不会显示短代码内容:

我错过了什么?

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

如果当前“视图”不是一篇文章,则函数中有一个条件将跳过(返回)。还有一个未定义的变量$content - 以下条件已删除,未定义的变量已修复(always, always have debugging 使用WordPress构建时打开):

function newsletter_signup_shortcode( $atts ) {
    $post_type = get_post_type(); // Not sure if you still need this for your MailChimp template?

    // Attributes
    extract( shortcode_atts(
        array(
            \'location\' => get_permalink(),
            \'show_title\' => \'yes\',
        ), $atts )
    );

    ob_start();
    ?>

    <!-- MailChimp Signup Form outputs here - code omitted for clarity -->

    <?php
    return ob_get_clean();
}

相关推荐

Namespaced shortcode?

我正在改造一个旧的WP站点,该站点有许多自定义的短代码,显然由于代码当前的组织方式,这些短代码在性能方面付出了代价。当然,我可以修复优化不好的代码,使用十几个短代码,并且一天就可以完成,但我想知道如何更好地组织它们。根据WordPress\'documentation, 建议将它们放在插件中并在上初始化init. 我们可以通过这样“命名”它们来减少这个钩子中的负载吗?[com.company shortcode attr=\"attr\" prop=\"prop\"] 有人尝试过这样的解决方案吗