使用来自互联网的代码示例制作短代码以返回特定页面。但是,短代码似乎不是渲染,而是显示短代码文本。该函数已在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');
答案 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文件..(不确定主题是否制作了副本或者是开发人员错误地完成了:) :) ..
问候