如何在Wordpress中的小部件描述中添加换行符?

如何在Wordpress中的小部件描述中添加换行符?,wordpress,widget,line-breaks,Wordpress,Widget,Line Breaks,我想在Wordpress中的小部件描述中添加换行符,以便在管理面板中显示使用说明,如下所示: To format the text use the tags: <h3>Subtitle</h3> <strong>Bold</strong> [:pt]Text in Portuguese [:en]Text in English [:es]Text in Spanish 与iTen中的“before_widget”、“after_widget”、“

我想在Wordpress中的小部件描述中添加换行符,以便在管理面板中显示使用说明,如下所示:

To format the text use the tags:
<h3>Subtitle</h3>
<strong>Bold</strong>
[:pt]Text in Portuguese
[:en]Text in English
[:es]Text in Spanish
与iTen中的“before_widget”、“after_widget”、“before_title”和“after_title”不同,“description”不接受HTML。如果是这样的话,通过简单地转义HTML就很容易解决问题。我不想用php函数(如
htmlspecialchars()
)将其转换为HTML

我不顾一切地尝试了这些,但没有成功:

"description" => "This is a line <br> break test"    
"description" => "This is a line \n break test"    
"description" => "This is a line \r break test"
"description" => "This is a line \r\n break test"
"description" => htmlspecialchars("This is a line <br>break test")
htmlspecialchars("description") => "This is a line <br>break test"
"description" => htmlentities("This is a line <br>break test")
"description" => html_entity_decode("This is a line <br>break test")
"description" => nl2br("This is a line <br> break test")
nl2br("description") => nl2br("This is a line <br> break test")
“description”=>“这是一个线路
断裂测试” “描述”=>“这是一个线路中断测试” “描述”=>“这是一个断线测试” “描述”=>“这是一个线路中断测试\r\n” “description”=>htmlspecialchars(“这是一条线
断裂测试”) htmlspecialchars(“description”)=>“这是一个线路
中断测试” “description”=>htmlentities(“这是一条线
断裂测试”) “description”=>html\u entity\u decode(“这是一行
中断测试”) “说明”=>nl2br(“这是一条线
断裂测试”) nl2br(“说明”)=>nl2br(“这是一条线
断裂测试”)

那么,有什么想法吗?

我不知道答案。但是,一个可能的解决方案是将其添加到widget form()中,就在字段的上方或下方。如果您还需要容纳更多的文本,则可以将表单加宽(小部件构造函数中的第四个参数是接受“宽度”的数组)。

从您的问题来看,您可能对小部件和侧边栏有点困惑,或者从您使用这两个术语的方式来看,它听起来就是这样。因此,如果我重复对你来说显而易见的话,我很抱歉

侧栏是站点上可以显示小部件的动态部分。小部件是显示在一个或多个侧栏中的单个项目。您正在引用的函数,register_sidebar(),用于创建一个侧栏区域——设置-->外观菜单中的一个块,您可以将小部件拖动到其中。描述字段仅用于指示基本信息。关于特定侧边栏的使用位置。例如,如果您注册了一个您计划在标题中使用的侧栏,则说明可能类似于“出现在导航菜单上方的标题中”

小部件还具有提供信息的描述。关于如何填写他们的各种选项。这听起来像你想做的。所以问题是你想用什么小部件?在小部件代码中,您可以设置您正在谈论的描述

至于边栏描述,Wordpress使用函数wp\u sidebar\u description($id)输出每个边栏的描述。该函数通过另一个Wordpress函数运行描述文本,esc_html(),该函数通过几项检查运行描述文本,并删除任何可能存在问题的内容

不过,您有机会更改默认输出。它所做的最后一件事是对文本应用一个过滤器,esc_html。因此,如果您想使

实际用作换行符,只需在主题的functions.php文件中添加一个过滤器即可恢复该功能,如下所示:

add_filter('esc_html', 'newLines');
function newLines($desc){
return htmlspecialchars_decode($desc);
}
这将基本上撤销Wordpress正在执行的操作,并输出任何HTML代码(粗体、斜体等),正如您所期望的那样

应该在原始响应中注意到,上面的过滤器将影响esc_html()函数,无论它在您的站点上的任何地方使用——您可能不希望这样

不幸的是,没有任何挂钩或过滤器可以让您针对特定的侧栏,但您可以使用以下方法将上述过滤器限制为仅在管理页面上发生:

function newLines($desc){
global $pagenow;
global $wp_registered_sidebars;
if($pagenow == 'widgets.php'){
return htmlspecialchars_decode($desc);
}
}
add_filter('esc_html', 'newLines');

在wp includes/widgets.php中打开此文件

查找名为:wp_widget_description()的函数;在线664

换成这个

函数wp_小部件描述($id){ 如果(!是_标量($id)) 返回

global $wp_registered_widgets;

if ( isset($wp_registered_widgets[$id]['description']) )
    return ( $wp_registered_widgets[$id]['description'] );

}

我发现了一种使用短代码的方法。首先,我们需要在functions.php文件中添加一个函数

function line_break_shortcode() {
    return '<br />';
}

add_shortcode( 'br', 'line_break_shortcode' );

伙计,你是个和蔼可亲的人,你对Wordpress很了解。我曾想象过它有类似于esc_html的东西,但我缺乏了解这一点的知识。我只需将
htmlspecialchars\u decode
更改为
nl2br
,就可以只换行,而不会错过显示所有html。你对侧边栏和小部件的解释也很好,尽管你怀疑我把术语弄错了:)嗯,出现了一个新问题。管理面板中的所有我的页面现在都标记为(无标题)。
function line_break_shortcode() {
    return '<br />';
}

add_shortcode( 'br', 'line_break_shortcode' );
 Anti-counterfeiting [br] & [br] Online