我正在尝试在主题中的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对象中正确注册了

希望能有所帮助

10-07 17:41