To avoid conflicts with X-Cart you should pull the Wordpress posts using an RSS feed. I created a Smarty plugin to do this. Create a file include/templater/plugins/function.sr_wpfeed.php with this code:
PHP Code:
<?php
if ( !defined('XCART_START') ) { header("Location: home.php"); die("Access denied"); }
## -----------------------------------------------------------------------------
## Smarty plugin "sr_wpfeed"
## Purpose: Return wordpress RSS feed
## Snow River X-Cart web store
##
## Author: Ralph Day, Snow River
##
##
## -----------------------------------------------------------------------------
##
## Changelog:
##
## 2009-10-26 Created (RD)
##
##
## -----------------------------------------------------------------------------
##
##
## Sample usage
## ------------
## {sr_wpfeed var="someposts" wpsite="http://www.snowriver.com/uggs-and-more" num=2}
## <foreach from=$someposts item=somepost>
## {$somepost.link}
## {$somepost.title}
## {$somepost.description}
## </foreach>
##
##
## Parameters
## ----------
## var [string] (required)
## Name for Smarty variable to return feed array in
##
## wpsite [string] (required)
## URL of Wordpress site
##
## num [integer] (required)
## number of posts to return
##
##
## -----------------------------------------------------------------------------
function smarty_function_sr_wpfeed($params, &$smarty) {
global $sql_tbl;
global $store_language;
$required_params = array('var','wpsite', 'num');
foreach($required_params as $_key => $reqd_param) {
if (!isset($params[$reqd_param]))
$smarty->trigger_error("sr_wpfeed: required attribute '$reqd_param' not passed", E_USER_ERROR);
}
$var = '';
$wpsite = '';
$num = 0;
foreach($params as $_key => $_val) {
switch($_key) {
case 'wpsite':
case 'var':
if (!is_array($_val)) {
if ($_val <> '')
$$_key = $_val;
else
$smarty->trigger_error("sr_wpfeed: '$_key' cannot be an empty string", E_USER_ERROR);
} else
$smarty->trigger_error("sr_wpfeed: '$_key' cannot be an array", E_USER_ERROR);
break;
case 'num':
if (!is_array($_val)) {
$$_key = (int)$_val;
if ($$_key < 0 || $$_key >25)
$smarty->trigger_error("sr_wpfeed: '$_key' not between 1 and 25", E_USER_ERROR);
} else
$smarty->trigger_error("sr_wpfeed: '$_key' cannot be an array", E_USER_ERROR);
break;
default:
$smarty->trigger_error("sr_wpfeed: attribute '$_key' not recognized", E_USER_NOTICE);
break;
}
}
if(!$xml=simplexml_load_file($wpsite.'/feed')){
trigger_error('Error reading XML file',E_USER_ERROR);
}
$posts = array();
foreach($xml as $item){
for($i=0; $i<count($item->item); $i++){
if($i<$num){
$posts[] = array('link' => (string)$item->item[$i]->link
, 'title' => htmlentities($item->item[$i]->title,ENT_COMPAT, 'UTF-8')
, 'description' => $item->item[$i]->description
);
}
}
}
$smarty->assign($var, $posts);
}
?>
The sample usage comments in the code shows what you can drop into your desired .tpl file to display the posts.