shortcode将自定义帖子类型名称传递给pagetemplate

时间:2014-02-08 14:32:42

标签: wordpress wordpress-plugin

我有一个分配给名为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

3 个答案:

答案 0 :(得分:0)

在WordPress模板文件中调用短代码,我们使用do_shortcode() 试试这个:

<?php echo do_shortcode('[myshortcode "cartoonbooks"]'); ?>

Know more

答案 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和页面应该相同)并将其添加到菜单中,不需要任何模板,它会自动获取存档书籍内容......所以无论你需要什么造型都把它放在存档页面