我正在尝试使用操作覆盖当前在整个模板中进行的函数调用(以便更轻松地更新某些复制的节)。例如,在archives.php
我有以下几点:
<?php get_header(); ?>
<?php roots_content_before(); ?>
<?php $page_for_posts = get_option( \'page_for_posts\' ); if ($page_for_posts) { echo \'<h1>\' . get_the_title($page_for_posts) . \'</h1>\'; } ?>
<h3>
<?php
$term = get_term_by(\'slug\', get_query_var(\'term\'), get_query_var(\'taxonomy\'));
if ($term) {
echo $term->name;
} elseif (is_day()) {
printf(__(\'Daily Archives: %s\', \'roots\'), get_the_date());
} elseif (is_month()) {
printf(__(\'Monthly Archives: %s\', \'roots\'), get_the_date(\'F Y\'));
} elseif (is_year()) {
printf(__(\'Yearly Archives: %s\', \'roots\'), get_the_date(\'Y\'));
} elseif (is_author()) {
global $post;
$author_id = $post->post_author;
printf(__(\'Author Archives: %s\', \'roots\'), get_the_author_meta(\'user_nicename\', $author_id));
} else {
single_cat_title();
}
?>
</h3>
<?php echo category_description(); ?>
<?php roots_loop_before(); ?>
<?php get_template_part(\'loop\', \'category\'); ?>
<?php roots_loop_after(); ?>
<?php roots_content_after(); ?>
<?php get_footer(); ?>
您可以看到一些函数,如
roots_content_before();
在另一个文件中,我有以下内容:
function roots_content_before() { do_action(\'roots_content_before\'); }
并按如下方式使用:
<?php
add_action(\'roots_content_before\', \'roots_bootstrap_content_before\');
function roots_bootstrap_content_before() { ?>
this is some text
<?php }
?>
从我所读到的内容来看,尤其是如果我要有大量代码,我应该使用输出缓冲区,但当我尝试这样做时,我会变得非常笨拙:
<?php
add_action(\'roots_content_before\', \'roots_bootstrap_content_before\');
function roots_bootstrap_content_before() { ob_start(); ?>
this is some text
<?php return ob_get_clean();
}
?>
我是不是完全错了?我仍在学习,但已经尝试了一段时间,但没有任何成功。任何指向正确方向的指针都会非常感激。谢谢