我从wordpress存储库下载了一个插件,它允许在帖子标题中添加字体图标,你可以根据喜好为每个帖子选择不同的图标。现在,该插件在post archive模板和single post模板中显示的图标很好,但在最近发布的小部件上没有显示特色图标。我是web开发和wordpress新手,我很想知道如何修改wordpress最近的帖子小部件(或其他显示自定义帖子类型的小部件),以同时显示插件分配给特定帖子标题的特色图标。
山姆,非常感谢你的时间和帮助
我从wordpress存储库下载了一个插件,它允许在帖子标题中添加字体图标,你可以根据喜好为每个帖子选择不同的图标。现在,该插件在post archive模板和single post模板中显示的图标很好,但在最近发布的小部件上没有显示特色图标。我是web开发和wordpress新手,我很想知道如何修改wordpress最近的帖子小部件(或其他显示自定义帖子类型的小部件),以同时显示插件分配给特定帖子标题的特色图标。
山姆,非常感谢你的时间和帮助
下面是一个如何预处理span
标记到帖子标题,其中span类添加到自定义字段中wpse_post_icon_class
.
我们可以尝试将其限制在最近发布的小部件上,包括:
add_filter( \'widget_display_callback\', function( $instance, $obj, $args )
{
// Only target Recent Posts widgets
if( \'recent-posts\' === $obj->id_base )
{
// Add filter
add_filter( \'the_title\', \'wpse_title_with_icon\', 10, 2 );
// Widget output
$obj->widget( $args, $instance );
// Remove filter
remove_filter( \'the_title\', \'wpse_title_with_icon\', 10, 2 );
// Override the default widget output
return true;
}
return $instance;
}, 10, 3 );
其中,过滤器回调定义为:function wpse_title_with_icon( $title, $post_id )
{
// check if the current post has the \'wpse_post_icon_class\' custom field
if( $icon = get_post_meta( $post_id, \'wpse_post_icon_class\', true ) )
$title = sprintf(
\'<span class="%s"></span> %s\',
esc_attr( trim( $icon ) ),
$title
);
return $title;
}
Example:
这里有一个Dashicon 示例中,我们添加wpse_post_icon_class
值为的自定义字段dashicons dashicons-flag
:然后,“最近的帖子”窗口小部件将显示为:其中,相应的标题前面有:<span class="dashicons dashicons-flag"></span>
Notes:
最好只存储flag
字符串,那么我们应该考虑一个更具体的名称,如wpse_post_dashicon_class
, 而不是泛型wpse_post_icon_class
名称我们可能还想扩展此功能,并创建一个元框,用户可以在其中单击要关联帖子的图标。
我们必须将Dashicons或我们选择使用的字体或svg图标排列在前端。
另一种选择是写一个custom widget 或shortcode 以获得更大的灵活性。
希望有帮助。
每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'