是否可以使用unctions.php将文本插入到html标记中?

时间:2019-02-11 作者:Henry

我的意思是:

我正在使用一个名为“pods”的插件,它允许创建自定义(CPT)并在这些CPT之间建立关系。

然而,我可以看到一个小小的缺陷,我为美国各州创建了一个CPT,所以每个CPT都是一个单独的州,这意味着在这个CPT中创建的每个帖子都有州的标题。

下面是HTML和相关CSS

<header class="entry-header clr">
    <h2 class="single-post-title entry-title" itemprop="headline">123 Florida</h2><!-- .single-post-title -->
</header><!-- .entry-header -->
我想能够添加一些文字,其中说“123”。

我在想,我可以重用我遇到的一个函数片段,它替代了一些CSS(在这个例子中,它在登录时隐藏了“记住我”复选框)。

function do_not_remember_me()
{
echo \'<style type="text/css">.forgetmenot { display:none; }</style>\';
}
add_action(\'login_head\', \'do_not_remember_me\');
我知道CSS类“应该”就足够了,对吗?

感谢所有帮助/指导

1 个回复
SO网友:tmdesigned

你问:“我知道CSS类‘应该’就足够了,对吗?”

呃,也许吧。但不像你想的那样。

CSS当然是用来设计样式的。您给出的示例中,类forgetmenot被设置为display:正如您所写的,none并没有取代一些CSS。它推翻了它,但原来的仍然存在。这很重要,因为它开始显示这个函数是如何工作的——它只是向页面中添加了一些内容。具体来说,它在标题部分添加了一个额外的样式规则。

因此,如果您想添加样式,当然可以重用该代码段。但是您想要添加内容,这不是CSS的目的。

警告(上面“可能”的原因)是因为CSS可以生成内容的地方有一个很小的例外。这就是伪元素。所以你可以这样做,

.single-post-title::before{
    content: "123"
}
这将在前面注入一个元素。单篇文章标题类元素。然而,这有一个非常有限的应用。您不能在那里放置任何其他HTML,只有纯文本(和图像,非常有趣)。由于现在有了一个额外的元素,而不仅仅是同一个元素的一部分,因此要正确设置样式也很困难。

我认为你想要做的是在文章输出到页面之前让WordPress更改标题。当然,您也只想对特定的自定义帖子类型执行此操作。

类似于:

function so328323_prefix_title( $title, $id = null ) {

    if ( get_post_type( $id ) == \'your_post_type\' ) {
        $title = "123 " . $title;
    }

    return $title;
}
add_filter( \'the_title\', \'so328323_prefix_title\', 10, 2 );
因此,我们在这里所做的是过滤帖子标题。我们正在中断WordPress显示标题并在需要时修改标题的过程。我们收到标题和帖子ID,然后检查帖子的类型是否正确(您必须输入正确的CPT名称),如果是,我们会在发送标题之前为其添加前缀。