0

首先,对不起,如果之前已经处理过,我花了很长时间搜索帖子无济于事。

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

我已经为具体编写了一个块并将此代码放入 view.php ...

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

...这会导致“建立数据库连接时出错”
如果我在 Concrete 之外运行它,它工作正常(我目前在服务器上的其他地方使用此代码,没有探测)
我也尝试过 wp_load.php,结果相同。


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

4

1 回答 1

1

遗憾的是,这种加载 Wordpress 的简单方法无论出于何种原因、某种相互冲突的定义或其他原因,都无法具体发挥作用。如果您尝试在同一服务器上的 Concrete5 站点上加载 Wordpress 帖子,您可能会发现使用 RSS 对您不起作用,因为有时服务器会阻止内部请求以防止循环。

这是我发现自己所处的位置,所以我决定自己访问 Wordpress 表,该表基于Concrete5 论坛上的“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;
}



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

于 2012-11-24T14:24:17.257 回答