我想在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
到目前为止的想法是使用ISO 8859-1符号(
)添加空格,这不是最好的解决方案(描述是葡萄牙语):
register_sidebar( array(
'name' => 'Widget',
'id' => 'widget-user',
'description' => "Para formatar o texto, utilize as tags: <h3>Subtítulo laranja</h3> <strong>Negrito</strong> [:pt]Texto em português nbsp; [:en]Texto em inglês [:es]Texto em espanhol (o que estiver escrito fora das tags de idioma irão aparecer para todos",
'before_widget' => '<div class="widget-user"><div class="box">',
'after_widget' => '</div></div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
));
与itens'after_widget','after_widget','before_title'和'after_title'不同,'description'不接受HTML。如果是这样的话,通过简单地转义HTML就可以轻松解决我不希望用像htmlspecialchars()
这样的php函数转换为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")
那么,有什么想法吗?
答案 0 :(得分:2)
从你的问题来看,听起来你可能会有一些小部件和侧边栏有点混淆 - 或者它可能听起来就像你使用这两个术语一样。所以,如果我正在向你重申这些显而易见的事情,我很抱歉。
侧边栏是您网站上可以显示小部件的动态部分。 窗口小部件是在一个或多个侧边栏中显示的各个项目。您正在引用的功能 register_sidebar(),用于创建侧边栏区域 - 设置中的其中一个块 - &gt;可以拖动小部件的外观菜单。描述字段仅用于指示基本信息。关于使用特定侧边栏的位置。例如,如果您注册了计划在标题中使用的侧边栏,则说明可能类似于“出现在导航菜单上方的标题中”。
窗口小部件也有提供信息的说明。关于如何填写他们的各种选择。这听起来像你想要做的。那么问题是你想要使用什么小部件?您可以在小部件代码中设置您正在讨论的描述。
就侧边栏说明而言,Wordpress使用 wp_sidebar_description($ id)功能输出每个侧边栏的说明。该函数通过另一个Wordpress函数 esc_html()运行描述文本,该函数通过几次检查运行它并删除任何可能存在问题的函数。
您可以更改默认输出。它做的最后一件事是在文本中应用过滤器 esc_html 。因此,如果您想让<br>
实际上作为新行使用,您只需在主题的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');
答案 1 :(得分:0)
我不知道答案。但是,一种可能的解决方案是将其添加到窗体小部件窗体()中,而不是在字段的上方或下方。如果您需要容纳更多文本,则可以使表单更宽(窗口小部件构造函数中的第四个参数是接受'width'的数组)。
答案 2 :(得分:0)
在wp-includes / widgets.php
中打开此文件 找到名为的函数:wp_widget_description();在第664行用这个替换它
function wp_widget_description($ id){ if(!is_scalar($ id)) 返回;
global $wp_registered_widgets;
if ( isset($wp_registered_widgets[$id]['description']) )
return ( $wp_registered_widgets[$id]['description'] );
}
答案 3 :(得分:0)
我找到了一种使用简码的方法。首先,我们需要在functions.php文件中添加一个函数
function line_break_shortcode() {
return '<br />';
}
add_shortcode( 'br', 'line_break_shortcode' );
然后我们可以在任何需要休息的地方使用 [br]
例如:
Anti-counterfeiting [br] & [br] Online