我有一个分配给名为cartoonbooks的页面的页面模板。自定义帖子类型也称为漫画书。如何让页面将customposttype传递给pagetemplate,以便我可以为不同的页面使用相同的模板。我尝试使用短代码但不成功...请帮助
的functions.php
<?php
function my_shortcode_handler( $atts, $content = null ) {
extract( shortcode_atts( array(
'attr_1' => '',
// ...etc
), $atts ) );
return $attr_1;
}
add_shortcode( 'myshortcode', 'my_shortcode_handler' );
?>
页面books.php
<article>
<?php
//Define the loop based on arguments
$loop = new WP_Query( $attr_1);
//Display the contents
while ( $loop->have_posts() ) : $loop->the_post();
?>
<?php the_content(); ?>
<?php endwhile;?>
</article>
在页面中我输入了短代码
[myshortcode attr_1="cartoonbooks"]
我更新了我的代码仍然无法正常工作......继续新的
的functions.php
function shortcode_handler( $atts, $content = null ) {
extract( shortcode_atts( array(
'posttype' => '',
// ...etc
), $atts ) );
return do_shortcode($posttype);
}
function register_my_shortcode(){
add_shortcode( 'shortcode', 'shortcode_handler' );
}
add_action('init','register_shortcode');
?>
page.php文件
<?php
$args = do_shortcode($content);
//Define the loop based on arguments
$loop = new WP_Query( $args );
//Display the contents
while ( $loop->have_posts() ) : $loop->the_post();
?>
<div><?php the_title('')?></div>
<?php endwhile;?>
在名为carttonbooks的页面本身我把代码
[myshortcode posttype="cartoonbooks"]
在其他名为adventurebooks的页面中我放了代码
[myshortcode posttype="adventurebooks"]
但模板没有从短片中获取posttype并显示内容... plzhelp
答案 0 :(得分:0)
在WordPress模板文件中调用短代码,我们使用do_shortcode()
试试这个:
<?php echo do_shortcode('[myshortcode "cartoonbooks"]'); ?>
答案 1 :(得分:0)
为什么这样做。这似乎是一种浪费。 检查模板中的帖子类型。 http://codex.wordpress.org/Function_Reference/get_post_type
if(get_post_type( $post ) == 'cartoonbooks') {
//Your special post type template code
} else {
// Your normal template code
}
答案 2 :(得分:0)
对于那些将来可能遇到这个问题的人来说还行...我通过测试和试用方法找到了解决方案......而且非常简单。
现在说你的帖子类型是书籍,而slug也是书籍,所以档案页面将是档案书籍。
创建一个带有slug作为书籍的页面(slug os archive和页面应该相同)并将其添加到菜单中,不需要任何模板,它会自动获取存档书籍内容......所以无论你需要什么造型都把它放在存档页面