WordPress的。在灯箱插件中显示短代码

时间:2014-09-17 19:20:01

标签: php wordpress shortcode

我正在研究WordPress主题。我使用插件在页面上显示图片(对于每个帖子1图片),每当点击其中一张图片时,以下代码注册并打开一个包含帖子内容的灯箱:

<?php
if($_REQUEST['popup']!=''){

$postObj = get_post( $_REQUEST['pid'] );


echo '<div class="ostContent">'.$postObj->post_content.'</div>';

exit;
?>

一切正常。

现在的问题是所有内容都能很好地显示出来。但由于某种原因,短代码不起作用。而且当我在帖子插件中使用小部件在帖子中显示小部件时,它也不会显示。

首先,我需要启用短代码。所以我改变了这个:

echo '<div class="ostContent">'.$postObj->post_content.'</div>';

用这个:

echo '<div class="ostContent">'.do_shortcode( $postObj->post_content ).'</div>';

但仍然没有。所以现在我不知道要改变什么来使灯箱显示小部件 希望有人知道解决方案!

编辑:当我打开灯箱外的帖子时(只需转到单页),短信代码就像应该的那样使用。所以不知何故,上面的代码不能识别短代码或......

2 个答案:

答案 0 :(得分:0)

根据此处的示例:http://codex.wordpress.org/Function_Reference/do_shortcode

您似乎需要更改:echo '<div class="ostContent">'.do_shortcode( $postObj->post_content ).'</div>';

为:

echo '<div class="ostContent">'.do_shortcode([shortcode_in_brackets]).'</div>';

这实际上应该显示代码。我假设您已在小部件中定义了适用短代码的实际文本。

否则,就像你当前这样做的方式,PHP会在post_content甚至有值之前触发。

答案 1 :(得分:0)

我想我理解你的问题。

如果相关帖子的post_typepost,则以下情况应该有效:

<?php     

    // Check for existence of 'popup' & 'pid' query vars
    if ( $_REQUEST['popup'] && $_REQUEST['pid'] ) {    

        // Select single post by ID (using value of the 'pid' query var)
        $query = new WP_Query( array ( 'p' => $_REQUEST['pid'] ) );    

        // Check that the query has returned something
        if ($query->have_posts()) {    

            /* Loop through query until we run out of posts
            (should only happen once in this case!) */
            while ($query->have_posts()) {    

                // Setup post, so we can use the_content() and stuff
                the_post();    

                echo '<div class="ostContent">';    

                /* The part we've been waiting for! the_content() will
                display your post content as expected */
                the_content();

                echo '</div>';    

            }    

        }    

    }    

?>

WP_Query是需要检索帖子的大部分时间:http://codex.wordpress.org/Class_Reference/WP_Query

您的代码几乎是直接从WordPress帖子表中检索和显示数据,这使得WordPress无法应用任何内部操作和过滤器(例如双线换行自动段落,短码执行)。