Wordpress短代码无法正常工作

时间:2011-01-27 05:03:59

标签: wordpress shortcode

我为wordpress构建了一个非常独特且javascript密集的主题,现在短信不起作用。我没有安装任何插件,所以不是这样。我从使用短代码所需的wordpress模板文件中删除了什么(例如:[gallery])。

我了解如何制作短代码,但是WP如何将其发布并替换为“[gallery]”,当它将其吐出以供显示时?

编辑: 这是我目前正在使用的内容:

    $pagepull = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish' ORDER BY menu_order", ARRAY_A);
    $i = 1;
    foreach ($pagepull as $single_page){
     echo "<div class=\"section\"><ul><li class=\"sub\" id=\"" . $i  . "\"><div class=\"insection\">";
         echo $single_page['post_content'];
$i++;
// more code that is irrelevant...
// more code that is irrelevant...
// more code that is irrelevant...
    }

4 个答案:

答案 0 :(得分:11)

好的,试试这个

 $pagepull = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish' ORDER BY menu_order", ARRAY_A);
    $i = 1;
    foreach ($pagepull as $single_page){
     echo "<div class=\"section\"><ul><li class=\"sub\" id=\"" . $i  . "\"><div class=\"insection\">";
         echo apply_filters('the_content',$single_page['post_content']);
$i++;

Wordpress会收集您的内容并对其应用过滤器。您必须注册过滤器并解析您的内容。

如果您的主题没有显示您的短代码,可能会输出帖子的内容而不让Wordpress过滤它。

为帖子调用函数get_the_content(),不会为短代码运行过滤器(如果有的话)。

申请

<?php apply_filters('the_content',get_the_content( $more_link_text, $stripteaser, $more_file )) ?>

参考:http://codex.wordpress.org/Function_Reference/get_the_content

注意:许多插件注册了包含内容的过滤器以实现短代码!

答案 1 :(得分:1)

如果您想要变量中的内容,请使用此选项:

ob_start();
the_content();
$content = ob_get_clean();

现在你可以回复$ content;或者使用正则表达式或任何你想要的内容看起来像你想要的那样。

答案 2 :(得分:1)

我遇到了同样的问题。

短代码取决于WP Loop,但这是一个不同的问题。长话短说,我在应显示短代码的页面添加了the_post();(例如articles.php)。

此外,请确保您使用the_content()来显示文字(例如,使用$post->post_data不会显示短信代码。)

答案 3 :(得分:0)

我的解决方案正在取代

<?= get_the_content() ?>

<?= the_content() ?>

,正如keatch已经提到的那样,在返回内容之前应用过滤器。

Read this carefully about the_content