0

使用来自互联网的代码示例制作短代码以返回特定页面。但是,短代码似乎没有呈现,而是显示了短代码文本。该函数已在内部定义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');
4

2 回答 2

1

不是问题的答案(问题出在其他地方,不在代码中),而是代码的优化版本。以社区 Wiki 模式发布,因此不会因反对票或反对票而产生意外声誉。

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;
}
于 2013-04-08T12:24:37.023 回答
0

感谢您的帮助.. 短代码现在似乎正在呈现(问题可能是错误的 function.php 文件:))..

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

问候

于 2013-04-15T06:02:22.577 回答