短代码不显示任何内容

时间:2015-10-05 作者:JoaMika

我正在使用此代码,但首页上没有显示任何内容。不过,似乎短代码注册正确。

function choose_ashtopbar() {
?><img src="/images/flag_globe2.png" class="ttupmg" /><div class="dmzeus"><ul><li class="f-selection">London<ul><li>New York</li><li>Paris</li><li>Milan</li></ul></li></ul></div><?php
}

function register_ashcodes(){
add_shortcode(\'ashtopbar\', \'choose_ashtopbar\');
}

add_action( \'init\', \'register_ashcodes\');

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

作为birgire 在评论中提到,“你错过了return 您回答的“如何在不转义HTML代码的情况下添加它?”?“

EDIT: 只是澄清一下。正如dswebsme所指出的那样,您的代码应该能够正常工作。我只是测试了有无返回,两种都可以(尽管返回将是首选)。下一个问题是:您是否将您的快捷码标记正确地添加到了内容中?e、 g。[ashtopbar/] ? 而且它没有拼写错误,对吗?

不管怎样,离开关于Herdeoc的部分:

在PHP中,有多种方法可以将复杂数据(包括HTML)获取到字符串变量中。在你的情况下,我会使用PHP\'s heredoc syntax, 因为您可以在其中放入任何内容,而不必逃避语法:

<?php

function choose_ashtopbar() {
    $html = <<<HTML
<img src="/images/flag_globe2.png" class="ttupmg" />
<div class="dmzeus">
    <ul>
        <li class="f-selection">London
            <ul>
                <li>New York</li>
                <li>Paris</li>
                <li>Milan</li>
            </ul>
        </li>
    </ul>
</div>
HTML;

    return $html;
}

function register_ashcodes(){
    add_shortcode(\'ashtopbar\', \'choose_ashtopbar\');
}

# I\'m guessing init has already run by this point
# add_action( \'init\', \'register_ashcodes\');
# Use a different hook or just register your code
register_ashcodes();
本质上,您的原始代码只是在add_shortcode 运行choose_ashtopbar 功能,这可能不是您想要的。

SO网友:Robert hue

你为什么要用这些。你不能简单地用add_shortcode?下面是函数。

也是的,你错过了return 在您的功能中。此处已完成代码。

function choose_ashtopbar( $atts, $content ) {
  return \'<img src="/images/flag_globe2.png" class="ttupmg" /><div class="dmzeus"><ul><li class="f-selection">London<ul><li>New York</li><li>Paris</li><li>Milan</li></ul></li></ul></div>\';
}
add_shortcode( \'ashtopbar\', \'choose_ashtopbar\' );

SO网友:dswebsme

您的代码按预期工作。您需要检查两件事:

1) 为了使短代码按预期呈现,您需要在循环中使用\\u content(),或在apply\\u filters()中包装内容,如下所示:

echo apply_filters(\'the_content\', $my_content);
apply\\u filters()助手告诉WordPress在呈现内容之前解析内容,解决短代码、换行符等问题。在循环中,\\u content()自动处理apply\\u filters()的调用。

2) 请确保在调试时清除可能存在的任何服务器端或本地缓存,以确保在进行更改时可以看到更改。

相关推荐

Namespaced shortcode?

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