Switch语句中的Add_action()

时间:2012-07-03 作者:Zach

我使用的方法是将我的所有单一视图集中在一个视图中loop-single.php 因此,有一个简单的switch语句,它将根据post类型渲染每个视图:

switch($post->post_type) {

    do_action(\'basey_loop_single\');

    default: ?>

        <?php echo apply_filters(\'basey_page_title_news\', __(\'<h1>News</h1>\',\'basey\')); ?>
        <?php /* Start loop */ ?>
        <?php while (have_posts()) : the_post(); ?>
            <?php basey_post_before(); ?>
                <article <?php post_class() ?> id="post-<?php the_ID(); ?>">
                    <?php basey_post_inside_before(); ?>
                        <header>
                            <h2 class="entry-title"><?php the_title(); ?></h2>
                            <?php basey_entry_meta(); ?>
                        </header>
                        <div class="entry-content">
                            <?php the_content(); ?>
                        </div>
                        <footer>
                            <?php wp_link_pages(array(\'before\' => \'<nav id="page-nav"><p>\' . __(\'Pages:\', \'basey\'), \'after\' => \'</p></nav>\' )); ?>
                            <div class="taxonomy">
                                <?php echo __(\'Posted in \',\'basey\'); the_category(\', \'); ?>
                            </div>
                            <?php $tag = get_the_tags(); if (!$tag) { } else { ?><div class="tags"><?php the_tags(); ?></div><?php } ?>
                            <div class="commentLinks"><?php comments_popup_link( __( \' 0 Comments\', \'blank\' ), __( \' 1 Comment\', \'blank\' ), __( \' % Comments\', \'blank\' ), \'comments-link\', __(\'Comments closed\', \'blank\')); ?> <?php if ( comments_open() ) : ?>| <a href="<?php the_permalink(); ?>#respond" title="<?php echo __(\'Add a Comment\',\'basey\'); ?>"><?php echo __(\'Add a Comment\',\'basey\'); ?></a><?php endif; ?>
                            </div>
                        </footer>
                    <?php basey_post_inside_after(); ?>
                    <?php comments_template(); ?>
                </article>
            <?php basey_post_after(); ?>
        <?php endwhile; /* End loop */ ?>

<?php }
你可以在顶部看到我包括了do_action() 调用我希望可以扩展的区域(可以通过我编写的其他插件或主题函数插入)。虽然这也是PHP的部分核心问题-->有没有一种方法可以像插入数组一样插入switch语句(如下所示):

function add_extra_fruits($fruits) {

$extra_fruits = array(
    \'plums\',
    \'kiwis\',
    \'tangerines\',
    \'pepino melons\'
);

// combine the two arrays
$fruits = array_merge($extra_fruits, $fruits);

return $fruits;
}
add_filter(\'add_fruits\', \'add_extra_fruits\');

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

不是很确定你在找什么-像这样的?

<?php echo apply_filters( \'basey_page_title_news\', __( \'<h1>News</h1>\', \'basey\' ) ) ?>
<?php

    while ( have_posts() ) : the_post();
        switch ( true ) :
            case has_action( "basey_loop_single_$post->post_type" ) :
                do_action( "basey_loop_single_$post->post_type", $post );
                break;

            default : ?>

    <!-- your fallback code -->

<?php

        endswitch;
    endwhile;

?>
如果插件/主题为特定的帖子类型创建了一个钩子,它将替换默认输出。

结束

相关推荐

将wp_INSERT_TERM与Switch_to_Blog一起使用时出现错误

我正在使用WP multisite 3.2运行一个大约80个站点的网络。我在使用switch\\u to\\u blog whith wp\\u insert\\u term时遇到异常情况。为了测试这一点,我禁用了所有插件,并在一个空白页面上进行测试,所以没有其他干扰。以下是示例代码:switch_to_blog(75); wp_insert_term( \'New Term\',\'category\'); restore_current_blog(); 从大多数博客运行时,它