拆分_Content()的内容;

时间:2013-01-06 作者:mscgl

我希望内容在<!--more--> 在一列中标记,其余列中标记(single.php) 只有

我不想使用插件,因为我需要编辑所有帖子才能得到我想要的。

我已完成以下操作并将其添加到functions.php:

// split content at the more tag and return an array
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;
}
并将以下内容添加到single.php:

<?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>\';?>\'
问题是首先echo \'<div id="column1">\', array_shift($content), \'</div>\'; 加载,然后加载底部侧栏(内的Facebook评论链接)。

然后echo \'<div id="column2">\', implode($content), \'</div>\'; 然后再次加载底部侧栏(内的Facebook评论链接)。

有没有人建议只加载一次侧栏(内的Facebook评论链接)(之后column2)?

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

我猜,至少部分是这样,但听起来FaceBook内容是作为过滤器加载的the_content, 在两个内容块上运行。

保持大部分代码完整的快速修复方法是remove the FaceBook filter 对于第一个数组,然后将其放回第二个数组。

$csize = count($content);
remove_filter(\'the_content\',\'fb-filter-name\');
for($c = 0; $c < $csize; $c++) {
    // Note: this conditional may not be quite right
    // I\'d have to test it to make sure it fires at the right time
    if ($csize === $c) add_filter(\'the_content\',\'fb-filter-name\');
    $content[$c] = apply_filters(\'the_content\', $content[$c]);
}
然而,您将遇到任何插入内容的过滤器的问题,因此这并不是最好的方法。最终,您将不得不删除并重新添加任何导致问题的过滤器。最好将大部分代码移动到函数中,创建一个字符串并运行the_content 对整个事情进行筛选。

// split content at the more tag and return an array
function split_content() {
    global $more;
    $more = true;
    $content = preg_split(\'/<span id="more-\\d+"><\\/span>/i\', get_the_content(\'more\'));
    // first content section in column1
    $ret = \'<div id="column1">\'. array_shift($content). \'</div>\';
    // remaining content sections in column2
    if (!empty($content)) $ret .= \'<div id="column2">\'. implode($content). \'</div>\';
    return apply_filters(\'the_content\', $ret);
}
完全未经测试,可能有问题,但这就是想法。

如果它是可移植的,也就是说,由多个主题使用,那么它就不能很好地工作,因为它需要一个主题编辑。所以请注意。但如果只是为了你,那就好了。

结束

相关推荐

WordPress不显示wp-Content/Themes文件夹中的主题

我会尽我所能解释这一点,但至少可以说这很奇怪。因此,两个默认主题(210和2111)出现在wp admin的外观>主题选项卡下。但是,如果我向wp内容/主题添加一个新主题(即使只是一个空文件夹),则除了当前使用的主题之外,所有主题都无法显示在“外观”>“主题”选项卡上。有人有什么想法吗?--这是在LAMP服务器上(Ubuntu 12.04)。