Add_filter rel = "prettyphoto" для WP3.4.1

Я знаю, что в связи с этим было несколько вопросов, и они смотрели на них, но мои немного отличаются от проблемы и кода. Я в основном создаю свою первую тему и надеюсь реализовать PrettyPhoto, я был осторожен с скриптами enqueue's и jQuery, и у NivoSlider работает нормально, но, очевидно, что-то пропустило, поэтому вопрос!

Во-первых, у меня есть этот код для WP jQuery в файле functions.php:

function scripts_jquery_load_scripts() { wp_enqueue_script( 'jquery' ); } add_action('wp_enqueue_scripts', 'scripts_jquery_load_scripts'); 

Тогда для PrettyPhoto у меня есть следующий код также в functions.php:

 function prettyphoto_load_scripts() { wp_register_script( 'jquery.prettyphoto', get_bloginfo('template_directory').'/prettyphoto/js/jquery.prettyphoto.js', array('jquery')); wp_enqueue_script( 'jquery.prettyphoto' ); } add_action('wp_enqueue_scripts', 'prettyphoto_load_scripts'); 

и для стиля

 function prettyphoto_load_styles() { wp_register_style( 'prettyphotocss', get_bloginfo('template_directory').'/prettyphoto/css/prettyphoto.css'); wp_enqueue_style( 'prettyphotocss' ); } add_action('wp_enqueue_style', 'prettyphoto_load_styles'); 

и, наконец, добавить rel "prettyphoto" на ссылку, окружающую изображение

 add_filter('the_content', 'addprettyphotorel', 12); add_filter('get_comment_text', 'addprettyphotorel'); function addprettyphotorel ($content) { global $post; $pattern = "/<a(.*?)href=('|\")([^>]*).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>(.*?)<\/a>/i"; $replacement = '<a$1href=$2$3.$4$5 rel="prettyphoto['.$post->ID.']"$6>$7</a>'; $content = preg_replace($pattern, $replacement, $content); return $content; } 

Я использовал Firebug, чтобы попытаться определить, где моя ошибка: у меня WP включает JQuery, который появляется в голове, а также скрипт PrettyPhoto. Также проверяя контейнер изображения, у меня появляется следующее:

 <a title="European Rugby 7s-29" rel="prettyphoto[230]" href="http://localhost/wp-content/uploads/2012/08/European-Rugby-7s-29.jpg"><img title="European Rugby 7s-29" alt="European Rugby 7s-29" class="attachment-thumbnail" src="http://localhost/wp-content/uploads/2012/08/European-Rugby-7s-29-150x150.jpg"></a> 

Но миниатюры все еще открываются в новом окне, а не с PrettyPhoto. Я установил WP_DEBUG в true в файле wp-config.php, разрешил несколько несвязанных проблем, а также просто отключил их.

Я запускаю все это на сервере WAMP на данный момент и планирую разместить онлайн на следующий день, чтобы узнать, помогает ли эта проблема, я знаю, что Jetpack не будет работать в WAMP.

Если у кого-то есть какие-либо возможные советы, это будет действительно оценено?

Заранее спасибо,

Муравей

Дополнительная информация

Добавляя это как некоторые детали из Firebug, ниже показано, что отображается в начале страницы:

 <script src="http://localhost/wp-includes/js/jquery/jquery.js?ver=1.7.2" type="text/javascript"></script> <script src="http://localhost/wp-content/themes/director/js/responsive-images.js?ver=3.4.1" type="text/javascript"></script> <script src="http://localhost/wp-content/themes/director/prettyphoto/js/jquery.prettyphoto.js?ver=3.4.1" type="text/javascript"></script> 

Я также посмотрел вкладку сценария при запуске Firebug, в списке сначала появляются обратные изображения, затем Prettyphoto и, наконец, jQuery. Я предположил, что сценарии загружаются в том порядке, в котором они указаны в голове?

Solutions Collecting From Web of "Add_filter rel = "prettyphoto" для WP3.4.1"

Хорошо, через несколько дней, пробовав различные варианты кода, который я изначально использовал, я до сих пор не имел успеха. Я взял свою тему прямо на голые кости и снова попробовал код, я даже тестировал код темы TwentyEleven, но до сих пор не испытывал радости. У меня есть ответ, но я не использую приведенный выше код.

Чтобы зарегистрировать и поставить в очередь скрипты, я поместил в функции functions.php следующее:

 <?php function prettyphoto_load_scripts() { wp_register_script( 'jquery.prettyphoto', get_bloginfo('template_directory').'/prettyphoto/jquery.prettyPhoto.js',array('jquery')); // array('jquery') = new script depends on Jquery, cause WordPress to load Jquery before the new script. wp_enqueue_script( 'jquery.prettyphoto' ); wp_register_script( 'enablepretty', get_bloginfo('template_directory').'/prettyphoto/enablepp.js'); // array('jquery') = new script depends on Jquery, cause WordPress to load Jquery before the new script. wp_enqueue_script( 'enablepretty' ); wp_register_style( 'prettyphotocss', get_bloginfo('template_directory').'/prettyphoto/css/prettyPhoto.css'); wp_enqueue_style( 'prettyphotocss' ); } add_action('wp_enqueue_scripts', 'prettyphoto_load_scripts',11); ?> 

Второй скрипт, который я регистрирую и enqueuing, называется enablepretty.js, чтобы включить prettyphoto, содержание которого ниже:

 jQuery(document).ready(function() { var items = jQuery('div#textcontent-container a').filter(function() { if (jQuery(this).attr('href')) return jQuery(this).attr('href').match(/\.(jpg|png|gif|JPG|GIF|PNG|Jpg|Gif|Png|JPEG|Jpeg)/); }); if (items.length > 1){ var gallerySwitch="[customPP]"; }else{ var gallerySwitch=""; } items.attr('data-rel','prettyPhoto'+gallerySwitch); jQuery("a[data-rel^='prettyPhoto']").prettyPhoto({ }); 

});

Обратите внимание, что «div # textcontent-container специфичен для моей тестовой темы, вам нужно будет изменить это на div, окружающий вашу галерею или контент. Я использовал data-rel = "prettyPhoto", а не rel = "prettyPhoto", это позволит избежать проблем при проверке HTML5.

Надеюсь, это поможет кому-то еще!

Муравей

Убедитесь, что вы также инициализировали его.

Поместите это в свой заголовок в качестве теста.

 <script type="text/javascript" charset="utf-8"> $(document).ready(function(){ $("a[rel^='prettyPhoto']").prettyPhoto(); }); </script>