2012-11-19 108 views
0

首先,如果之前已经处理过这个问题,我已经花了很长时间搜索帖子而无济于事。将Wordpress导入Concrete5:建立数据库连接时出错

我有一个WordPress博客和一个Concrete5网站。我正在试着写出Concrete5网站上最新的三篇博客文章。我不能使用RSS,因为两个站点都在同一台服务器上,并且内部RSS已禁用(是否有办法解决此问题?)。

我已经写了混凝土块,并把这个代码在view.php ...

<?php 
    define('WP_USE_THEMES', false); 
    require('path-to-wordpress/wp-blog-header.php'); 
?> 

...这将导致“错误建立一个数据库连接”
如果我在混凝土外部运行它,它工作正常(我目前在服务器上的其他地方使用此代码,无探针)
我也尝试过使用wp_load.php,结果相同。


很抱歉,如果这是真的很明显,我已经工作了一段时间,现在:(
在此先感谢。

回答

1

可悲的是这种简单的方法来加载的WordPress不起作用在如果你试图在同一台服务器上的Concrete5站点上加载Wordpress的帖子,你可能会发现使用RSS不会对你有用,因为有时服务器会阻止内部请求以防止循环。

这是我发现自己的位置,所以我决定访问Wordpress表格,自己在Concrete5 forums上'jcrens8392'发布的代码上构建,因此这里适用于任何发现它们都处于相同位置的人。

// posts and stuff 
$category = 3 
$items = 4 

// wordpress db stuff 
$dbUser = 'user'; 
$dbPass = 'password'; 
$dbHost = 'localhost'; 
$dbName = 'name'; 


// connect to wordpress database 
$conn = mysql_connect($dbHost, $dbUser, $dbPass); 


// handle connection errors 
if(!$conn) { 
    $aDebug['Unable to connect to DB'] = mysql_error(); 
} elseif(!mysql_select_db($dbName, $conn)) { 
    $aDebug['Unable to select database'] = mysql_error(); 
} 


// make SQL query 
else { 
    $sQuery = "SELECT wp_posts.post_date, wp_posts.post_content , wp_posts.guid , wp_posts.post_title, wp_posts.post_excerpt, wp_posts.post_name FROM wp_posts , wp_term_relationships WHERE post_type = 'post' AND post_status = 'publish' AND wp_posts.ID = wp_term_relationships.object_id AND wp_term_relationships.term_taxonomy_id = ".$category." ORDER BY post_date DESC LIMIT ".$items; 
    $rPosts = mysql_query($sQuery, $conn); 
} 


// plonk posts into a convinient array 
$posts = array(); 
while($row = mysql_fetch_array($rPosts)){ 
     $excerpt = $controller->getExcerpt(utf8_encode(strip_tags($row['post_content'])) , 0 , 200) .' <a href="'.$row['guid'].'">Read More &#8594;</a>'; 
     $date = $controller->simplifyDate($row['post_date']); 
     $temp = array ('post_title' => $row['post_title'] , 'post_excerpt' => $excerpt , 'post_date' => $date , 'post_link' => $row['guid']); 
     array_push($posts , $temp); 
    } 



我把这些功能在Controller.php这样(从phpsnaps摘录功能)...

function getExcerpt($str, $startPos=0, $maxLength=100) { 
    if(strlen($str) > $maxLength) { 
     $excerpt = substr($str, $startPos, $maxLength-3); 
     $lastSpace = strrpos($excerpt, ' '); 
     $excerpt = substr($excerpt, 0, $lastSpace); 
     $excerpt .= '...'; 
    } else { 
     $excerpt = $str; 
    } 

    return $excerpt; 
} 


function simplifyDate($str) { 
    $months = array("January","February","March","April","May","June","July","August","September","October","November","December"); 
    $strs = split (' ' , $str); 
    $date = split ('-' , $strs[0]); 
    $month = $months[ $date[1] - 1 ]; 
    $day = $date[2]; 
    $year = $date[0]; 
    return $day . ' ' . $month . ' ' . $year; 
} 



这真的是不理想的解决方案,它但是,具有明显的工作优势。希望这可以帮助某人。

相关问题