我正在尝试在主题中的WordPress中使用内置的thickbox。我正在尝试使所有通过管理员添加的图片都自动具有thickbox功能。我试着把它放在functions.php中,但是没有用:
function fb_add_thickbox($content){
$content = preg_replace('/<a(.*?)href="(.*?).(jpg|jpeg|png|gif|bmp|ico)"(.*?)><img/U', '<a$1href="$2.$3" $4 class="thickbox"><img', $content);
return $content;
}
add_filter('the_content', 'fb_add_thickbox', 2);
最佳答案
假设您的代码实际上正在工作-(您的标记实际上已被过滤吗?)-这将失败,因为未激活thickbox。您必须手动注入(inject)它:
正如@Alexcp指出的那样-您必须手动注册并排入javascript和css(在admin部分之外)。除了您的preg_replace函数之外,还将以下内容添加到模板的Functions.php
中。
// register scripts
if (! function_exists(thickbox_register){
function thickbox_register() {
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery','http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js');
wp_register_script( 'thickbox', 'path to thickbox'.thickbox.js, 'jquery');
}
}
add_action('init', 'thickbox_register');
//print the now registered scripts
if (! function_exists(thickbox_enqueue){
function thickbox_enqueue() {
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'thickbox' );
}
}
add_action('wp_print_scripts', 'thickbox_enqueue');
// do the same for css
if (! function_exists(thickbox_style_enqueue){
function thickbox_style_enqueue() {
wp_register_style( 'thickbox', 'path to css'.thickbox.css );
wp_enqueue_style( 'thickbox' );
}
}
add_action('wp_print_styles', 'thickbox_style_enqueue');
请注意,可以通过several ways获得路径-但是类似
bloginfo('url');
的东西应该可以帮助您入门。如果仍然有问题,请使用FireBug或类似的方法来确保thickbox已在DOM的jquery对象中正确注册了。
希望能有所帮助