WordPress将内容添加到不同分区

时间:2019-01-02 作者:MisterLA

我想弄清楚的是如何让页面的内容显示在不同的div中。这意味着如果我在编辑器中添加两段,我希望在div section1中显示第一段,在div section2中显示第二段。

enter image description here

页面代码:

<?php
if( have_posts()):
    while( have_posts()): the_post();?>
                    <?php
                    // original content display
                        // the_content();
                    // split content into array
                        $content = split_content();
                    // output first content section in column1
                        echo \'<div id="column1">\', array_shift($content), \'</div>\';
                    // output remaining content sections in column2
                        echo \'<div id="column2">\', implode($content), \'</div>\';
                ?>
<?php endwhile;
endif;
?>
以及功能。php:

    function split_content() {
    global $more;
    $more = true;
    $content = preg_split(\'/<span id="more-\\d+"><\\/span>i/\', get_the_content(\'more\'));
    for($c = 0, $csize = count($content); $c < $csize; $c++) {
        $content[$c] = apply_filters(\'the_content\', $content[$c]);
    }
    return $content;
}

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

不要那样做!要实现这一点,还有许多其他的选择,这些选择并不繁琐。以下是我的建议。

首先,概述,create a child theme. 这将允许您对主题进行编辑,而不会在更新期间丢失它们。

设置好子主题后,将自定义字段添加到管理页面。我不使用大量插件,但在添加自定义字段时,我使用ACF 因为它非常简单,你可以在几分钟内创建专业的管理布局。如果要手动添加自定义字段check this out.

现在您已经添加了自定义字段,剩下的就是将数据从自定义字段拉入页面模板。

基本代码示例根据主题的不同,这会有所变化,但您应该明白了。在这个例子中,我将使用2017主题。在此主题中,页面的内容来自/模板部件/页面/内容页面。php,所以我在我的子主题中复制了它。

With ACF Plugin (recommended)

假设我使用ACF创建了一个名为“more\\u content”的新编辑器部分。我只想在我的子主题的内容页中放置以下代码。php和您的完成。

<div id="more-content">
    <?php
        $value = get_field("more_content");

        if($value) {
            echo $value;
        }
    ?>
</div>

Without ACF Plugin

如果不想使用ACF创建自定义字段,则需要使用以下代码创建字段。。。

add_action(\'add_meta_boxes\',  function() { 
    add_meta_box(\'my_meta_box\', \'Meta Box Title\', \'my_metabox_function\');
});

function my_metabox_function($post) {
    $text= get_post_meta($post->ID, \'my_metabox_name\' , true );
    wp_editor(htmlspecialchars_decode($text), \'meta_box_id\', $settings = array(\'textarea_name\'=>\'my_input_name\') );
}

add_action( \'save_post\', function($post_id) {
    if (!empty($_POST[\'my_input_name\'])) {
        $data=htmlspecialchars($_POST[\'my_input_name\']); //make sanitization more strict !!
        update_post_meta($post_id, \'my_metabox_name\', $data );
    }
}); 
然后在页面模板中显示数据,如。。。

<?php
    $more_content = get_post_meta($post->ID, \'my_metabox_name\', true);
    echo $more_content;
?>

相关推荐