Intro
The easy-fancybox WordPress is actually a rather simple but cool plugin to use, if it would work out-of-the-box in WordPress 3.x (on Debian unstable).
First of all, a bit of background information:
- I’ve installed WordPress using
apt-get install wordpresson a Debian Unstable server - I’ve created three WordPress sites, all three use the same DocumentRoot (
/usr/share/wordpress), but they do have separatewp-content/locations (each in their own home directory) - plugins are installed in one of the blogs
- Symlinks are creating from the blog that installed plugin to
/usr/share/wordpress/wp-content/plugins/
Now, I have never written a WordPress plugin before, nor have I been developing in PHP for years! But since I really liked this plugin so much, I decided to give it a go (PHP, how hard can it be … kids play with it!).
The Hack
After analyzing other WordPress plugins (copy-paste development, don’t we just all do it!), the hack to make it work was pretty straightforward:
The original code:
// ENQUEUE
wp_enqueue_script('jquery.fancybox', plugins_url($efb, __FILE__).'/jquery.fancybox.pack.js', array('jquery'), '1.3.1');
wp_enqueue_script('jquery.easing', plugins_url($efb, __FILE__).'/jquery.easing.pack.js', array('jquery'), '1.3');
wp_enqueue_script('jquery.mousewheel', plugins_url($efb, __FILE__).'/jquery.mousewheel.pack.js', array('jquery'), '3.0.2');
wp_enqueue_style('jquery.fancybox', plugins_url($efb, __FILE__).'/jquery.fancybox.css.php', false, '1.3.1');
add_action('wp_head', 'easy_fancybox');
}
My hack:
// ENQUEUE
wp_enqueue_script('jquery.fancybox', plugins_url($efb, basename(dirname(__FILE__))).'/easy-fancybox/jquery.fancybox.pack.js', array('jquery'), '1.3.1');
wp_enqueue_script('jquery.easing', plugins_url($efb, basename(dirname(__FILE__))).'/easy-fancybox/jquery.easing.pack.js', array('jquery'), '1.3');
wp_enqueue_script('jquery.mousewheel', plugins_url($efb, basename(dirname(__FILE__))).'/easy-fancybox/jquery.mousewheel.pack.js', array('jquery'), '3.0.2');
wp_enqueue_style('jquery.fancybox', plugins_url($efb, basename(dirname(__FILE__))).'/easy-fancybox/jquery.fancybox.css.php', false, '1.3.1');
add_action('wp_head', 'easy_fancybox');
}
And now the plugins works on my website and on all the other WordPress sites I run on my server (I’ve installed WordPress 3.x on my Debian server using the apt-get command.)
I’ve mailed the author my changes 😉
UPDATE: for 1.3.1.2
After talking back and forwards with the author of this great plugin, the final result of the hacking is the following:
// ENQUEUE
wp_enqueue_script('jquery.fancybox', plugins_url($efb, basename(dirname(__FILE__))."/fancybox.php").'/jquery.fancybox.pack.js', array('jquery'), '1.3.1');
wp_enqueue_script('jquery.easing', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/jquery.easing.pack.js', array('jquery'), '1.3.1');
wp_enqueue_script('jquery.mousewheel', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/jquery.mousewheel.pack.js', array('jquery'), '3.0.2');
wp_enqueue_style('jquery.fancybox', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/jquery.fancybox.css.php', false, '1.3.1');
add_action('wp_head', 'easy_fancybox');
}
UPDATE: 07/10/2010
This works for version 1.3.1.3. I’ve only changed the wp_enqueue_script() statements.
function easy_fancybox_enqueue() {
// check if fancy.php is moved one dir up like in WPMU's /mu-plugins/
// NOTE: don't use WP_PLUGIN_URL to avoid problems when installed in /mu-plugins/
$efb_subdir = (file_exists(dirname(__FILE__).'/easy-fancybox')) ? 'easy-fancybox' : '';
// ENQUEUE
// register main fancybox script
wp_enqueue_script('jquery.fancybox', plugins_url($efb, basename(dirname(__FILE__))."/fancybox.php").'/jquery.fancybox.pack.js', array('jquery'), '1.3.1');
if( "none" != get_option("fancybox_transitionIn") || "none" != get_option("fancybox_transitionOut") ) {
// first get rid of previously registered variants of jquery.easing (by other plugins)
wp_deregister_script('jquery.easing');
wp_deregister_script('jqueryeasing');
wp_deregister_script('jquery-easing');
wp_deregister_script('easing');
// then register our version
wp_enqueue_script('jquery.easing', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/jquery.easing.pack.js', array('jquery'), '1.3.1');
}
// first get rid of previously registered variants of jquery.mousewheel (by other plugins)
wp_deregister_script('jquery.mousewheel');
wp_deregister_script('jquerymousewheel');
wp_deregister_script('jquery-mousewheel');
wp_deregister_script('mousewheel');
// then register our version
wp_enqueue_script('jquery.mousewheel', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/jquery.mousewheel.pack.js', array('jquery'), '3.0.2');
// register style
wp_enqueue_style('jquery.fancybox', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/jquery.fancybox.css.php', false, '1.3.1');
}
UPDATE: 03/11/2010
This works for version 1.3.2. I’ve only changed the wp_enqueue_script() statements.
function easy_fancybox_enqueue() {
// check if fancy.php is moved one dir up like in WPMU's /mu-plugins/
// NOTE: don't use WP_PLUGIN_URL to avoid problems when installed in /mu-plugins/
$efb_subdir = (file_exists(dirname(__FILE__).'/easy-fancybox')) ? 'easy-fancybox' : '';
// ENQUEUE
// register main fancybox script
wp_enqueue_script('jquery.fancybox', plugins_url($efb, basename(dirname(__FILE__))."/fancybox.php").'/fancybox/jquery.fancybox-1.3.2.pack.js', array('jquery'), '1.3.2');
if( "none" != get_option("fancybox_transitionIn") || "none" != get_option("fancybox_transitionOut") ) {
// first get rid of previously registered variants of jquery.easing (by other plugins)
wp_deregister_script('jquery.easing');
wp_deregister_script('jqueryeasing');
wp_deregister_script('jquery-easing');
wp_deregister_script('easing');
// then register our version
wp_enqueue_script('jquery.easing', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/fancybox/jquery.easing-1.3.pack.js', array('jquery'), '1.3');
}
// first get rid of previously registered variants of jquery.mousewheel (by other plugins)
wp_deregister_script('jquery.mousewheel');
wp_deregister_script('jquerymousewheel');
wp_deregister_script('jquery-mousewheel');
wp_deregister_script('mousewheel');
// then register our version
wp_enqueue_script('jquery.mousewheel', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/fancybox/jquery.mousewheel-3.0.4.pack.js', array('jquery'), '3.0.4');
// register style
wp_enqueue_style('jquery.fancybox', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/fancybox/jquery.fancybox.css.php', false, '1.3.2');
}
UPDATE: 23/11/2010
This works for version 1.3.3:
function easy_fancybox_enqueue() {
// check if fancy.php is moved one dir up like in WPMU's /mu-plugins/
// NOTE: don't use WP_PLUGIN_URL to avoid problems when installed in /mu-plugins/
$efb_subdir = (file_exists(dirname(__FILE__).'/easy-fancybox')) ? 'easy-fancybox' : '';
// ENQUEUE
// register main fancybox script
wp_enqueue_script('jquery.fancybox', plugins_url($efb, basename(dirname(__FILE__))."/fancybox.php").'/fancybox/jquery.fancybox-1.3.3.pack.js', array('jquery'), '1.3.3');
if( "none" != get_option("fancybox_transitionIn") || "none" != get_option("fancybox_transitionOut") ) {
// first get rid of previously registered variants of jquery.easing (by other plugins)
wp_deregister_script('jquery.easing');
wp_deregister_script('jqueryeasing');
wp_deregister_script('jquery-easing');
wp_deregister_script('easing');
// then register our version
wp_enqueue_script('jquery.easing', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/fancybox/jquery.easing-1.3.pack.js', array('jquery'), '1.3');
}
// first get rid of previously registered variants of jquery.mousewheel (by other plugins)
wp_deregister_script('jquery.mousewheel');
wp_deregister_script('jquerymousewheel');
wp_deregister_script('jquery-mousewheel');
wp_deregister_script('mousewheel');
// then register our version
wp_enqueue_script('jquery.mousewheel', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/fancybox/jquery.mousewheel-3.0.4.pack.js', array('jquery'), '3.0.4');
// register style
wp_enqueue_style('jquery.fancybox', plugins_url($efb, basename(dirname(__FILE__)).'/fancybox.php').'/fancybox/jquery.fancybox.css.php', false, '1.3.3');
}
UPDATE: 08/03/2011
Patch for version 1.3.4.8
--- easy-fancybox.php_old 2011-03-08 10:38:07.000000000 +0100
+++ easy-fancybox.php 2011-03-08 10:41:35.000000000 +0100
@@ -226,7 +226,7 @@
';
if ('1' == $overlaySpotlight)
- echo '
+ echo '
';
}
@@ -325,7 +325,7 @@
$do_fancybox = false;
$easing = false;
foreach ($easy_fancybox_array as $value) {
- // anything enabled?
+ // anything enabled?
if ( '1' == get_option($value['options']['enable']['id'],$value['options']['enable']['default']) )
$do_fancybox = true;
// easing anyone?
@@ -337,7 +337,7 @@
// ENQUEUE
// register main fancybox script
- wp_enqueue_script('jquery.fancybox', plugins_url(FANCYBOX_SUBDIR.'/fancybox/jquery.fancybox-'.FANCYBOX_VERSION.'.pack.js', __FILE__), array('jquery'), FANCYBOX_VERSION);
+ wp_enqueue_script('jquery.fancybox', plugins_url('/easy-fancybox/fancybox/jquery.fancybox-'.FANCYBOX_VERSION.'.pack.js', basename(__FILE__)), array('jquery'), FANCYBOX_VERSION);
foreach ($easy_fancybox_array as $value) {
if( ( 'elastic' == get_option($value['options']['transitionIn']['id'],$value['options']['transitionIn']['default']) || 'elastic' == get_option($value['options']['transitionOut']['id'],$value['options']['transitionOut']['default']) ) && ( '' != get_option($value['options']['easingIn']['id'],$value['options']['easingIn']['default']) || '' != get_option($value['options']['easingOut']['id'],$value['options']['easingOut']['default']) ) ) {
@@ -352,7 +352,7 @@
wp_deregister_script('jquery-easing');
wp_deregister_script('easing');
// then register our version
- wp_enqueue_script('jquery.easing', plugins_url(FANCYBOX_SUBDIR.'/fancybox/jquery.easing-'.EASING_VERSION.'.pack.js', __FILE__), array('jquery'), EASING_VERSION);
+ wp_enqueue_script('jquery.easing', plugins_url('/easy-fancybox/fancybox/jquery.easing-'.EASING_VERSION.'.pack.js', basename(__FILE__)), array('jquery'), EASING_VERSION);
}
// first get rid of previously registered variants of jquery.mousewheel (by other plugins)
@@ -361,10 +361,10 @@
wp_deregister_script('jquery-mousewheel');
wp_deregister_script('mousewheel');
// then register our version
- wp_enqueue_script('jquery.mousewheel', plugins_url(FANCYBOX_SUBDIR.'/fancybox/jquery.mousewheel-'.MOUSEWHEEL_VERSION.'.pack.js', __FILE__), array('jquery'), MOUSEWHEEL_VERSION);
+ wp_enqueue_script('jquery.mousewheel', plugins_url('/easy-fancybox/fancybox/jquery.mousewheel-'.MOUSEWHEEL_VERSION.'.pack.js', basename(__FILE__)), array('jquery'), MOUSEWHEEL_VERSION);
// register style
- wp_enqueue_style('easy-fancybox.css', plugins_url(FANCYBOX_SUBDIR.'/easy-fancybox.css.php', __FILE__), false, FANCYBOX_VERSION, 'screen');
+ wp_enqueue_style('easy-fancybox.css', plugins_url('/easy-fancybox/easy-fancybox.css.php', basename(__FILE__)), false, FANCYBOX_VERSION, 'screen');
}
In your WordPress plugins directory you will have to make the following symlinks:
$ cd _WORDPRESS_DIR_/wp-content/plugins/easy-fancybox/fancybox/ $ ln -s ../jquery.fancybox.css.php $ ln -s ../easy-fancybox-nl.mo $ ln -s ../easy-fancybox-nl_NL.mo $ ln -s ../easy-fancybox.php $ ln -s ../easy-fancybox.pota $ ln -s .. fancybox
The plugin and the discussion can be found on http://4visions.nl/wordpress-plugins/easy-fancybox/