Bolding several words at once

时间:2017-11-14 作者:Toby

我的一个WordPress用户需要在任何给定的帖子中加粗几个词。这些词会因职位的不同而有所不同,并不是每个职位都会加粗。

他们想要的输出的一个例子是;

  • Team X vs Y队Youth Team BC United 是

    没有押韵或理由,不幸的是,他们花了很长时间来突出每个单词并加粗。

    有没有人知道一种方法,他可以在一篇文章中快速选择多个单词,然后一次加粗?

    我在考虑写一些JS,它会监听某个修饰键被按下,然后点击它,它会记住要加粗的单词,但我想不出如何在前端运行并加粗所有内容。

    如有任何特定方向的建议或指示,将不胜感激。

1 个回复
SO网友:MarkPraschan

这是一个好主意,我想我也可以用。这是我刚刚制定的解决方案。

首先,将以下内容添加到functions.php 文件:

/* BOLDED CONTENT */

// Affect the content after it\'s retrieved and before it\'s displayed
add_filter( \'the_content\', \'bolded_content\' );

function bolded_content( $content ) { 

    // Look for custom meta field called \'bold\'
    if ( get_post_meta( get_the_ID(), \'bold\', true ) ) {

        // Get \'bold\' value
        $bold_terms = get_post_meta( get_the_ID(), \'bold\', true );

        // Split string into multiple values at each comma
        $keys= explode(", ",$bold_terms);

        // Add <strong> tag with special class if needed
        $bolded_content = preg_replace(\'/(\'.implode(\'|\', $keys) .\')/iu\', \'<strong class="bolded_content">\\0</strong>\', $content); // Adds 

        // Remove strong tag if it was added anywhere inside of an existing tag.
        // For example:  <a href="/folder/<strong class="bolded_content">VALUE</strong>.html"> would break things.
        foreach ($keys as $key) {
            $bolded_content = preg_replace("|(<[^>]+?)(<strong class=\\"bolded_content\\">($key)</strong>)([^<]+?>)|","$1$3$4",$bolded_content);
        }

        $content = $bolded_content;

        }

    return $content;
}
然后添加custom field 到您的帖子,其中名称为“bold”,值为您希望加粗的任何术语(用逗号和空格分隔)。在您的情况下,这将是:

Name: 粗体
Value: X队、青年队B队、C队联合

对于进一步的样式,您可以调整.bolded_content 在CSS文件中。

这应该允许您添加任意数量的术语,并且它们是在帖子/页面级别设置的。这应该可以做到。希望有帮助!

结束

相关推荐

Excluding posts not working

我试了很多次,但没有得到正确的结果。有人请检查我的代码,我哪里做错了。我想显示具有相同类别的其他帖子,但不是单个页面上显示的帖子,而是当前帖子的上一篇和下一篇帖子。有没有其他方式可以展示?$thisid = get_the_ID(); $prevpost = get_previous_post(); $previd = $prevpost->ID; $nextpost = get_next_post(); $nextid = $nextpost->ID;