Используя WordPress встроенный в DIstbox без плагина - PullRequest
6 голосов
/ 09 июля 2011

Я пытаюсь использовать встроенный Thickbox в WordPress в моей теме.Я пытаюсь сделать так, чтобы все картинки, которые я добавлял через администратора, автоматически имели функцию 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);

Ответы [ 4 ]

2 голосов
/ 11 июля 2011

Предполагая, что ваш код действительно работает - (действительно ли ваша разметка фильтруется?) - это не удастся, так как Thickbox не был активирован. Вы должны вручную ввести его:

Как заметил @Alexcp - вы должны зарегистрировать javascript и css вручную и поставить их в очередь (за пределами раздела администратора). В дополнение к вашей функции 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');

Обратите внимание, что пути можно получить несколькими способами - но что-то вроде bloginfo('url'); должно помочь вам начать.

Если у вас все еще есть проблемы, используйте FireBug или что-то подобное, чтобы убедиться, что Thickbox правильно регистрируется в объекте jquery DOM.

Надеюсь, это поможет

0 голосов
/ 06 октября 2018

Этот работал для меня

<?php add_thickbox(); ?>
<div id="my-content-id" style="display:none;">
 <p>
      This is my hidden content! It will appear in ThickBox when the link is clicked.
 </p>
</div>

<a href="#TB_inline?width=600&height=550&inlineId=my-content-id" 
class="thickbox">View my inline content!</a>
0 голосов
/ 27 февраля 2012

добавьте это в файл functions.php вашей темы:

<?php
// Adds thickbox to all images with a link inside of $content.
// Uses the title attribute in the Media Library.
add_filter('the_content', 'brentini_addthickboxclass');
function brentini_addthickboxclass($content) {
add_thickbox();
$pattern[0] = "/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>/i";
$replacement[0] = '<a$1href=$2$3.$4$5 class="thickbox">';
$pattern[1] = "/(<a href=)('|\")([^\>]*?)(\.bmp|\.gif|\.jpg|\.jpeg|\.png)('|\")([^\>]*?)(>)(.*?) title=('|\")(.*?)('|\")(.*?)(<\/a>)/i";
$replacement[1] = '$1$2$3$4$5$6 title=$9$10$11$7$8 title=$9$10$11$12$13';
$pattern[2] = "/(<a href=)('|\")([^\>]*?)(\.bmp|\.gif|\.jpg|\.jpeg|\.png)('|\")([^\>]*?) title=([^\>]*?) title=([^\>]*?)(>)(.*?)(<\/a>)/i";
$replacement[2] = '$1$2$3$4$5$6 title=$7$9$10$11';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}

Это будет работать безупречно, если вы сделаете это именно так. Нет необходимости добавлять все те звонки, которые упоминали другие. В этом нет необходимости, поскольку WordPress изначально включает в себя jquery и Thickbox для использования на серверной части. Так что add_thickbox () - это все, что вам нужно, чтобы вызвать Thickbox в вашей теме. Оставшаяся часть сценария просто добавляет class = "thickbox" к любому изображению внутри $ content и использует атрибут title из библиотеки мультимедиа WordPress.

Если вас интересует скрипт, который включает в себя этот плюс, а также поддержку Thickbox для галерей с навигацией, проверьте его на pastebin .

Для более упрощенной версии, не включающей навигацию, эта в pastebin использует jquery для добавления класса Thickbox в галереи.

0 голосов
/ 17 декабря 2011

Некоторым простым способом WordPress уже содержит thickbox.js в своей папке скриптов.

Так что просто откройте wp-include/script-loader.php

найти строку от function print_head_scripts(),

Добавить $wp_scripts->do_items( 'thickbox' ); после $wp_scripts->do_items( 'l10n' );

Затем обновите страницу, вы увидите, что thickbox.js уже включено в ваш header part, затем только добавьте class="thickbox" в ваш <a> tag, вы можете прекрасно вызывать Thickbox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...