自定义短代码无法渲染

时间:2013-04-08 10:57:34

标签: php wordpress shortcode

使用来自互联网的代码示例制作短代码以返回特定页面。但是,短代码似乎不是渲染,而是显示短代码文本。该函数已在functions.php内定义。

代码如下:

/* Code taken from: 
 * http://alex.leonard.ie/2010/09/09/wordpress-shortcode-to-insert-content-of-another-page/
 */

function pa_insertPage($atts, $content = null) {
     // Default output if no pageid given
     $output = NULL;
     // extract atts and assign to array
     extract(shortcode_atts(array(
     "page" => '' // default value could be placed here
     ), $atts));
     // if a page id is specified, then run query
     if (!empty($page)) {
     $pageContent = new WP_query();
     $pageContent->query(array('page_id' => $page));
     while ($pageContent->have_posts()) : $pageContent->the_post();
     // assign the content to $output
     $output = get_the_content();
     endwhile;
     }
     return $output;
}
add_shortcode('insert_page', 'pa_insertPage');

2 个答案:

答案 0 :(得分:1)

问题(问题出在别处,而不是代码中)的答案,但不是代码的优化版本。在社区维基模式下发布,因此无论是向下还是向上投票都不会产生无意识的声誉。

add_shortcode( 'insert_page', 'insert_page_so_15877376' );

function insert_page_so_15877376( $atts, $content = null ) 
{
    // Default output if no pageid given
    $output = '';

    // Access $atts directly, no need of extracting
    if( !isset( $atts['page'] ) )
        return $output;

    // Grab the page directly, no need of WP_Query
    // get_post() could be used as well
    $get_page = get_page( $atts['page'] );
    if( !$get_page )
        return $output;

    // Do Shortcode in case the other page contains another shortcode
     $output = do_shortcode( $get_page->post_content );
     return $output;
}

答案 1 :(得分:0)

谢谢你的帮助..短代码似乎现在渲染(问题可能是错误的function.php文件:))..

似乎主题还有另一个要使用的functions.php文件..(不确定主题是否制作了副本或者是开发人员错误地完成了:) :) ..

问候