View Full Version : Wordpress Header & Footer Integation
jdorsey
09-15-2013, 10:09 AM
Hello,
I'm trying to integrate vBulletin 5.0.x with Wordpress. Specifically, I'm trying to add the WordPress header and footer to show in vBulletin using Wordpress's functions get_header() and get_footer() that come from the file wp-blog-header.php in the WordPress installation folder. So I'm trying to figure out the following:
1) require the wp-blog-header.php file somewhere for vbulletin to use using require()
2) to figure out where to insert the php functions get_header() and get_footer()
I looked at this post: https://vborg.vbsupport.ru/showthread.php?t=298770 and it gave some information on making an extension by adding a folder to the /core/packages folder and putting a class file there with a custom function that I could use in a template, but I couldn't find much information on how to create a product xml file. It seems important to do this because I can't register my extension in the Admin CP -> Products & Hooks -> Manage Products -> Add/Import Product without it.
I'm don't need to create hooks or templates, and this product I'm creating doesn't need any custom html. Here's the code I wrote so far:
<?php
class wp_integrate extends vB_Api_Extensions
{
public $product = 'wp_integrate';
public $version = '1.0.0';
public $developer = 'me';
public $title = 'WordPress Integration Extension';
public $minver = '5.0.4';
public $maxver = '5.0.4';
public $infourl = '';
public $checkurl = '';
public $AutoInstall = 0;
public $extensionOrder = 9;
public function wpHeader(){
get_header();
}
public function wpFooter(){
get_footer();
}
}
I added these lines to the /core/global.php file because I couldn't figure out where to put a php require statement:
define('ROOT_DIR',str_replace('\\\\', '/', realpath(dirname(__FILE__))).'/'); #Get real path for root dir ---linux and windows
require(ROOT_DIR.'../beta/wp-blog-header.php'); // get WordPress
So any help would be greatly appreciated - I couldn't find any docs on doing this after 6+ hours of searching.
marco_kellershoff
09-15-2013, 10:33 AM
You don't need a product xml. All you need is an extension and a product. The extension will show up without a product.xml. Once it shows up you can add a product for that extension manually in the AdminCP.
The extension is basically a .php file inside the packages/yourextensionname/api/ directory.
<?php
class wpHeaderFooter_Api_Options extends vB_Api_Extensions
{
public $product = 'wpHeaderFooter';
public $version = '1.0.0';
public $developer = 'foo';
public $title = 'WordPress Integration Extension';
public $minver = '5.0.4';
public $maxver = '5.0.4';
public $infourl = '';
public $checkurl = '';
public $AutoInstall = 0;
public $extensionOrder = 10;
public function wpHeader(){
define('ROOT_DIR',str_replace('\\\\', '/', realpath(dirname(__FILE__))).'/'); #Get real path for root dir ---linux and windows
require_once(ROOT_DIR.'../beta/wp-blog-header.php'); // get WordPress
get_header();
}
public function wpFooter(){
define('ROOT_DIR',str_replace('\\\\', '/', realpath(dirname(__FILE__))).'/'); #Get real path for root dir ---linux and windows
require_once(ROOT_DIR.'../beta/wp-blog-header.php'); // get WordPress
get_footer();
}
}
Put this into packages/wpheaderfooter/api/options.php
Not tested, but should work.
jdorsey
09-15-2013, 11:27 AM
Thank you for such a quick reply! I got the extension successfully registered.
Is this how I run the function in a template?:
{vb:data wp, wpHeaderFooter_Api_Options, wpHeader}
(not sure about the varname "wp") - I put this in but nothing shows up in the header template.
Also, do I need to register this as a product in the AdminCP import/add product page for this to work, or is just registering the extension good enough?
Thanks again!
marco_kellershoff
09-15-2013, 11:42 AM
I'm not familiar with wordpress, so I don't really know what wpHeader() is doing.
If it is just returning the header html like so:
return $wordpress_html_string;
then you need to alter the extension's code a bit like this:
public function wpHeader(){
define('ROOT_DIR',str_replace('\\\\', '/', realpath(dirname(__FILE__))).'/'); #Get real path for root dir ---linux and windows
require_once(ROOT_DIR.'../beta/wp-blog-header.php'); // get WordPress
return get_header();
}
(now the function returns the value)
and then in your template you do something like this:
{vb:data wp_header_html_string, wpHeaderFooter_Api_Options, wpHeader}
{vb:raw wp_header_html_string}
the first line just assigns the data and the second ones echos it :)
--------------- Added 1379249675 at 1379249675 ---------------
You might also want to read about this related topic here:
http://stackoverflow.com/questions/12964043/reading-wordpress-header-php-footer-php-to-a-text-string
jdorsey
09-15-2013, 05:14 PM
Ok, I feel like I'm so close, but missing something. Here is my new extension class file so far. I simplified it just to get it to work at all:
<?php
class wpHeaderFooter_Api_Options extends vB_Api_Extensions
{
public $product = 'wpheaderfooter';
public $version = '1.0.0';
public $developer = 'me';
public $title = 'WordPress Integration Extension';
public $minver = '5.0.4';
public $maxver = '5.0.4';
public $infourl = '';
public $checkurl = '';
public $AutoInstall = 1;
public $extensionOrder = 10;
public function wpHeader(){
//define('ROOT_DIR',str_replace('\\\\', '/', realpath(dirname(__FILE__))).'/'); #Get real path for root dir ---linux and windows
//require_once(ROOT_DIR.'../beta/wp-blog-header.php'); // get WordPress
//return get_header();
return "<h1>My Custom Header</h1>";
}
public function wpFooter(){
//define('ROOT_DIR',str_replace('\\\\', '/', realpath(dirname(__FILE__))).'/'); #Get real path for root dir ---linux and windows
//require_once(ROOT_DIR.'../beta/wp-blog-header.php'); // get WordPress
//get_footer();
return "<h1>My Custom Footer</h1>";
}
}
And here is my new template markup (using the header template), which I inserted around line 114 (shortly after the <body> opening tag):
<h1>Start</h1>
{vb:data wphead, wpHeaderFooter_Api_Options, wpHeader}
{vb:raw wphead}
<h2>End</h2>
Also, you mentioned I need that I need to manually add the product. I did so in the AdminCP ->Products & Hooks -> Manage Products -> Add/Import Product, Add Product section. Here I just gave the Product id text field the same name as $product variable I used in my class above: 'wpheaderfooter' .
I do have the options -> Products/Hook System enabled (set to yes).
However, I get no output. Thanks so much for your patience in helping me. Hopefully I'm just missing something simple.
marco_kellershoff
09-15-2013, 08:28 PM
Just try to add a hook - then it should work :)
jdorsey
09-16-2013, 12:29 AM
Ok, I pulled my {vb:raw} code out of the header template and made a new template, "wp_header_footer" and put it in there:
<h1>Start</h1>
{vb:data wphead, wpHeaderFooter_Api_Options, wpHeader}
{vb:raw wphead}
<h2>End</h2>
Then I created a new hook.
product: "WP Header and Footer"
title: "WP Header Footer Hook"
hook location: header_toolbar
execution order: 10 (Default)
template name: "wp_header_footer"
hook arguments: left blank
The html I put in the template shows up (h2 and h1), but the {vb:raw wphead} does not.
The thing I am bit worried about is that when I created a new Product ("WP Header and Footer"), I didn't have any way I could see to link it to my wpHeaderFooter_Api_Options class listed in the extensions. Am I missing a step?
marco_kellershoff
09-16-2013, 06:00 AM
If you can wait until tommorow, I'll write you a detailed, step by step guide, including (working) source code and screenshots.
It's just that today we have planned a relaunch of one of our mayor sites :) Don't have really time for this ATM.
But please, don't get angry or sad - I know the vBulletin software is lacking good docs, which is really sad - I fiddled around about 2 full 8h workdays to understand how the new extension system in vB5 works - it's a shame.
I'll come back to you tomorrow, k?
--------------- Added 1379336922 at 1379336922 ---------------
Ok, I pulled my {vb:raw} code out of the header template and made a new template, "wp_header_footer" and put it in there:
<h1>Start</h1>
{vb:data wphead, wpHeaderFooter_Api_Options, wpHeader}
{vb:raw wphead}
<h2>End</h2>
Then I created a new hook.
product: "WP Header and Footer"
title: "WP Header Footer Hook"
hook location: header_toolbar
execution order: 10 (Default)
template name: "wp_header_footer"
hook arguments: left blank
The html I put in the template shows up (h2 and h1), but the {vb:raw wphead} does not.
The thing I am bit worried about is that when I created a new Product ("WP Header and Footer"), I didn't have any way I could see to link it to my wpHeaderFooter_Api_Options class listed in the extensions. Am I missing a step?
I'm really sorry for such misleading information ... must have been a lack of sleep & coffee on my side..
<h1>Start</h1>
{vb:data wphead, options, wpHeader}
{vb:raw wphead}
<h2>End</h2>
it has to be options, because you are simply extending the options api from vbulletin..
jdorsey
09-16-2013, 01:25 PM
That worked! I replaced wpHeaderFooter_Api_Options with options, and it now works. Thanks so much! Hopefully the rest is just php stuff and not vbulletin related. I may post how I actually completed the whole thing in a little tutorial for posterity. And that would be great if you could post a little tutorial for how to make a hello world extension. If you're like me, I know you must be very busy though.
moonclamp
10-01-2013, 11:15 PM
Just posting briefly as I'm interested in this too, and have far less php knowledge! :)
When I get this right, will it also add the wordpress top menu, or is that another problem to solve?
A tutorial would benefit me immensely, thank you.
moonclamp
11-01-2013, 10:32 AM
Just giving this a gentle bump :)
bhalkum
11-05-2013, 02:44 PM
I would love to actually see this as something here on vbulletin.org.
heredia21
12-08-2013, 12:30 PM
Any success?
I would love a tutorial please :)
jessicajonnie
01-24-2014, 05:04 PM
I would love one, too. I'm definitely missing something. =(
temsamane
02-14-2014, 07:49 PM
This is what i need...
iamART
07-19-2014, 12:56 AM
any update on whether there is a step by step tutorial for this?
nominal26
08-14-2014, 10:27 PM
Bump. Ditto that!
subwiz
08-19-2014, 01:24 PM
Subscribing to this ......
vb-ER
12-11-2014, 03:55 PM
anything on this?
I have the html code showing in the header template but it hasn't replaced the header or footer of my vb?
i need help .. sadly this is an abandoned topic.. any help would be greatly appreciated
vb-ER
12-15-2014, 04:28 PM
BUMP !
Asama
12-30-2014, 09:41 AM
Guide please!!
ozzy47
12-30-2014, 10:08 AM
Perhaps reading through this may help, http://www.vbulletin.com/forum/blogs/joe-d/3932614-
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.