我希望内容在<!--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
)?
最合适的回答,由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);
}
完全未经测试,可能有问题,但这就是想法。
如果它是可移植的,也就是说,由多个主题使用,那么它就不能很好地工作,因为它需要一个主题编辑。所以请注意。但如果只是为了你,那就好了。