PDA

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?

nezr
12-18-2013, 10:39 PM
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-