为此,您实际上需要利用wp_enqueue_scripts
操作而不是wp_head
.
wp_enqueue_scripts
从技术上讲,是向站点添加脚本和样式的正确方法。此操作允许我们注册脚本和样式以供以后使用(这是我们在这里想要的),并允许我们将脚本和样式输出到页面,而无需硬编码。这也很重要,因为wp_head
之前运行the_content
这意味着一旦代码到达the_content
.
首先,让我们使用wp_enqueue_scripts
行动
/**
* Register the gallery stylesheet for later use if our content contains the gallery shortcode.
*/
function enqueue_gallery_style(){
wp_register_style(\'gallery_style\', get_stylesheet_directory_uri() . \'/assets/css/gallery.css\');
}
add_action(\'wp_enqueue_scripts\', \'enqueue_gallery_style\'); // register with the wp_enqueue_scripts action
我们使用
wp_register_style
作用在这种情况下,我们将使用前两个参数。第一个是我们要为样式命名的名称,以便稍后使用。你可以给它起任何名字。在这里,我将其命名为“gallery\\u style”。第二个参数是主题或插件中样式表的url路径(请确保根据特定路径进行更新)。以下是有关
wp_register_style现在我们可以添加另一个the_content
除了您的image_posts
筛选以执行短代码条件检查。在支票内,如果我们找到它,那么我们运行wp_enqueue_style
函数将我们的图库样式排队,并将其添加到该特定页面。
/**
* This function is used to check the_content to see if it contains any shortcodes
*
* @param $content
*
* @return string
*/
function shortcode_check( $content ) {
if ( has_shortcode( $content, \'gallery\' ) ) {
wp_enqueue_style( \'gallery_style\' ); // this is the same name we gave our gallery style when we registered it.
}
return $content; // Make sure you still return your content or else nothing will display.
}
add_filter( \'the_content\', \'shortcode_check\' );
有关的详细信息
wp_enqueue_styleMethod if you are trying to add admin-generated styles (eg. from customizer or other settings) that won\'t have a physical file.
如果需要输出通过管理员生成的样式(即颜色),可以使用
wp_add_inline_style
作用
此函数允许您将样式添加到已注册的样式表中。就我们已经注册的画廊而言。上面的css文件,我们可以添加wp_add_inline_style( \'gallery_style\', $user_css );
它将在注册样式表之后立即将其添加为内联样式。
在这里$user_css
将样式作为字符串without 这个<style>
包装器。
因此,在您的示例中,您可以使用一些基本样式为gallery注册样式表,然后使用此函数添加将覆盖这些基本样式的样式。
function shortcode_check( $content ) {
if ( has_shortcode( $content, \'gallery\' ) ) {
wp_enqueue_style(\'gallery_style\');
wp_add_inline_style( \'gallery_style\', $user_css ); // this will add our inline styles. Make sure to sanitize!!!
}
return $content; // Make sure you still return your content or else nothing will display.
}
更多关于
wp_add_inline_style