Spacing within the excerpt

时间:2014-03-28 作者:Diane Laidlaw

我试图找出如何使用PHP控制摘录的显示方式。如何让它在帖子中呈现html间距,而不是只显示一个大段落。希望这是有意义的。

让我给你举个例子。

因此,我的客户已经将帖子联合在一起,并希望在每篇帖子的顶部添加一个指向实际作者的超链接。然后需要有一个换行符,然后是它下面内容的实际摘录。目前,摘录只是将所有内容显示为一段。

我已经设法输入了一些php代码来呈现摘录中的超链接,但仍然坚持不让摘录去掉间距。

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

该摘录删除了所有html标记,这一特性让许多人感到沮丧。我已经编写了一个自定义摘录,可以阻止该摘录触发任何html标记。它还会在设定的字数后打断句子后面的摘录。如果您需要在精确的单词处剪切摘录,只需修改我的代码即可。

您首先需要删除原始摘录,然后注册新摘录。为此,请在函数中添加以下代码。php

remove_filter(\'get_the_excerpt\', \'wp_trim_excerpt\');
add_filter(\'get_the_excerpt\', \'pietergoosen_custom_wp_trim_excerpt\'); 
现在是自定义摘录。将此添加到上面的代码下面

function pietergoosen_custom_wp_trim_excerpt($pietergoosen_excerpt) {
    global $post;
    $raw_excerpt = $pietergoosen_excerpt;
        if ( \'\' == $pietergoosen_excerpt ) {

            $pietergoosen_excerpt = get_the_content(\'\');
            $pietergoosen_excerpt = strip_shortcodes( $pietergoosen_excerpt );
            $pietergoosen_excerpt = apply_filters(\'the_content\', $pietergoosen_excerpt);
            $pietergoosen_excerpt = str_replace(\']]>\', \']]>\', $pietergoosen_excerpt);

            //Set the excerpt word count and only break after sentence is complete.
                $excerpt_word_count = 75;
                $excerpt_length = apply_filters(\'excerpt_length\', $excerpt_word_count); 
                $tokens = array();
                $excerptOutput = \'\';
                $count = 0;

                // Divide the string into tokens; HTML tags, or words, followed by any whitespace
                preg_match_all(\'/(<[^>]+>|[^<>\\s]+)\\s*/u\', $pietergoosen_excerpt, $tokens);

                foreach ($tokens[0] as $token) { 

                    if ($count >= $excerpt_word_count && preg_match(\'/[\\?\\.\\!]\\s*$/uS\', $token)) { 
                    // Limit reached, continue until ? . or ! occur at the end
                        $excerptOutput .= trim($token);
                        break;
                    }

                    // Add words to complete sentence
                    $count++;

                    // Append what\'s left of the token
                    $excerptOutput .= $token;
                }

            $pietergoosen_excerpt = trim(force_balance_tags($excerptOutput));

                $excerpt_end = \' <a href="\'. esc_url( get_permalink() ) . \'">\' . \'&nbsp;&raquo;&nbsp;\' . sprintf(__( \'Read more about: %s &nbsp;&raquo;\', \'pietergoosen\' ), get_the_title()) . \'</a>\'; 
                $excerpt_more = apply_filters(\'excerpt_more\', \' \' . $excerpt_end); 

                $pos = strrpos($pietergoosen_excerpt, \'</\');
                if ($pos !== false)
                // Inside last HTML tag
                $pietergoosen_excerpt = substr_replace($pietergoosen_excerpt, $excerpt_end, $pos, 0);
                else
                // After the content
                $pietergoosen_excerpt .= $excerpt_end;

            return $pietergoosen_excerpt;   

        }
        return apply_filters(\'pietergoosen_custom_wp_trim_excerpt\', $pietergoosen_excerpt, $raw_excerpt);
    }
如果您只需要特定的标记,可以使用下面的代码。只需添加下面的代码,然后删除需要剥离的标记。

function pietergoosen_get_allowedtags() {
// Add custom tags to this string that will be used as allowed tags
    return \'<head>,<title>,<base>,<link>,<meta>,<style>,<script>,<noscript>,<body>,<section>,<nav>,
    <article>,<aside>,<h1>,<h2>,<h3>,<h4>,<h5>,<h6>,<header>,<footer>,<address>,<main>,<p>,<hr>,
    <pre>,<blockquote>,<ol>,<ul>,<li>,<dl>,<dt>,<dd>,<figure>,<figcaption>,<div>,<a>,<em>,<strong>,
    <small>,<s>,<cite>,<q>,<dfn>,<abbr>,<data>,<time>,<code>,<var>,<samp>,<kbd>,<sub>,<sup>,<i>,<b>,
    <u>,<mark>,<ruby>,<rt>,<rp>,<bdi>,<bdo>,<span>,<br>,<wbr>,<ins>,<del>,<img>,<iframe>,<embed>,
    <object>,<param>,<video> ,<audio>,<source>,<track>,<canvas>,<map>,<area>,<svg>,<math>,<table>,
    <caption>,<colgroup>,<col>,<tbody>,<thead>,<tfoot>,<tr>,<td>,<th>,<form>,<fieldset>,<legend>,<label>,
    <input>,<button>,<select>,<datalist>,<optgroup>,<option>,<textarea>,<keygen>,<output>,<progress>,<meter>,
    <details>,<summary>,<menuitem>,<menu>\'; 
}
只需添加此行$pietergoosen_excerpt = strip_tags($pietergoosen_excerpt, pietergoosen_get_allowedtags()); 此线以下$pietergoosen_excerpt = str_replace(\']]>\', \']]&gt;\', $pietergoosen_excerpt);

希望这对你有帮助

SO网友:engelen

功能wpautop 自动将换行符转换为段落标记。假设CSS样式设置正确,可以应用wpautop 对于任何带有换行符的文本,WordPress将自动添加段落标记。

wpautop 自动将作为筛选器添加到the_excerpt, 因此,默认情况下,这应该是doen。你能发布你用来显示摘录的代码吗?

结束

相关推荐

Bold letters inside excerpt

我目前正在尝试将摘录中的一些单词用“h1”标记加粗,但它似乎不起作用。当我在网上查看时,我所听到的只是建议使用插件。有没有一种方法可以在没有插件的情况下实现这一点。我的CSS如下所示。.side-bar h1 { font-weight: bold!important; }