将不同内容传递给模板部件

时间:2016-02-08 作者:JoshRicha

我已经创建了一个分割屏幕模板,我想跨多个页面使用它。我希望所有这些模板中的内容在两侧都有所不同。如何将不同的内容传递到这些模板部件的每一侧?还是有其他方法?

我曾考虑为每个页面添加拆分屏幕,但这并不是很枯燥。我的拆分屏幕模板HTML如下:

<section id="content">
    <section class="left-split">
        <div class="left-split-content">

            // left side content here

        </div><!-- left split content -->
    </section><!-- left split -->

    <section class="right-split" data-spy="scroll" data-target="#myScrollspy" data-offset="70">
        <div class="right-split-content clearfix">

            // right side content here

        </div><!-- content -->
    </section><!-- right split content -->

</section><!-- content -->

1 个回复
SO网友:majick

1. 只需在每个位置调用模板部件。

<?php get_template_part(\'content\',\'left\'); ?>
以及

<?php get_template_part(\'content\',\'right\'); ?>
然后创建content-left.phpcontent-right.php 模板。

2. 另一种方法是do_action 而是在那里。例如:。

<?php do_action(\'template_content_left\'); ?>
这可以为您提供对所使用的内容模板的额外控制。在你的职能中。php您可以使用以下内容:

if (is_page(\'special\')) {add_action(\'template_content_left\',\'template_special_content_left\');} 
else {add_action(\'template_content_left\',\'template_content_left\');}  

function template_special_content_left() {get_template_part(\'special-content\',\'left\');}
function template_content_left() {get_template_part(\'content\',\'left\');}
如果您需要根据当前页面条件从不同的位置获取内容,这可能更适合您。

EDIT 自定义字段示例,更接近描述的需求。。。

if (is_page(\'about-us\')) {
    add_action(\'template_content_left\',\'template_menu_output\');
    add_action(\'template_content_right\',\'template_content_output\');
} 
elseif (is_page(\'services\')) {
    add_action(\'template_content_left\',\'template_services_field_left\');
    add_action(\'template_content_right\',\'template_services_field_right\');
}

function template_menu_output() {echo "CUSTOM MENU";}
function template_content_output() {the_content();}

function template_services_field_Left() {
    global $post; echo get_post_meta($post->ID,\'fieldkey1\',true);
}
function template_services_field_right() {
    global $post; echo get_post_meta($post->ID,\'fieldkey2\',true);
}
只需替换为输出所需字段的ACF函数。