Wordpress插件从Xenforo中提取最新帖子,但链接到线程而不是帖子

时间:2015-08-09 03:02:15

标签: wordpress posts xenforo

这是我第一次在这里发帖,所以如果我做错了什么,请告诉我!

我正在使用WordPress和Xenforo,使用WP作为门户页面。他们都有自己的数据库。我使用的WP插件多年来一直没有继续支持,专为Xenforo设计。

问题:该插件从Xenforo论坛中提取最新帖子(或最新帖子),并将其显示在WP上的侧栏小部件中。但帖子链接导致THREAD而不是特定的POST。

我查看了插件的代码,试图找到我必须修改的代码部分来纠正这个问题。我不知道该找什么。

这是插件的代码:

   <?php
//------------------------------------------------------------------------------------
//status:               CHECKED IN
//------------------------------------------------------------------------------------
/**
 * qry_lastposts.php:    run the query to get the last posts
 * @package plugins_lastposts
 * @version version 1.4.0
 * @copyright EIP Software LLC - eipSoftware_Copyright.php
 */
//------------------------------------------------------------------------------------
/**
 * Get Last Posts --> run the queries to get the latest forum posts
 * @return string last post query 
 */
function qry_LastPostList($userOptions)
{
    try
    {
        $qry_sql =  "   SELECT  thread.thread_id,
                                thread.title, 
                                thread.username                 as threadstarter,
                                thread.user_id                  as threadstarterid,
                                thread.reply_count              as replies,
                                thread.last_post_id             as lastpostid,
                                thread.last_post_username       as lastposter,
                                thread.last_post_user_id        as lastposteruserid,
                                thread.last_post_date           as lastpostdate,
                                usr.avatar_date                 as lastposteravatardate,
                                TRUNCATE(usr.user_id, -3)/1000  as lastposteravatardir

                        FROM    xf_thread                   as thread
                                inner join xf_user          as usr
                                on thread.last_post_user_id = usr.user_id

                        WHERE   thread.discussion_state = 1
                                AND usr.message_count >= " . $userOptions['forumUserPosts'] . "
                                AND node_id NOT IN  (" . $userOptions['excludeNodes'] . ")
                                AND thread.last_post_date >=UNIX_TIMESTAMP(DATE_SUB(NOW(),INTERVAL " . $userOptions['forumLookBack'] . " DAY))
                                AND usr.user_group_id NOT IN (" . $userOptions['forumUserGroup'] .")  
                        ORDER BY last_post_date DESC
                    ";      
        $qry_sql .= ($userOptions['forumPosts']>=1 && $userOptions['forumPosts']<=100) ? 
                    " LIMIT 0," .  $userOptions['forumPosts']
                    :" LIMIT 0,10";
        return($qry_sql);
    }
    catch(ExceptionHandler $e)
    {
        $e->ParseError($qry_sql);
    }
}
?> 

我认为这里的某些内容与帖子ID无关。例如,当我点击列表中的第一个帖子时:

http://vi-control.net/community/index.php?threads/ORCHESTRAL-TOOLS-ANNOUNCES-SOLOISTS-SERIES--new-TECH-DEMOS.46965/

我看到它瞄准线程, ?的index.php线程/ ORCHESTRAL-TOOLS-宣布-独唱-SERIES - 新-TECH-DEMOS

即使帖子ID在那里:#46965

当我点击它时,确定它到达该线程的第一个帖子,而不是我期望找到的那个帖子。所以它就像它向我展示了看到一个新帖子的最新THREAD,而不是带我到帖子本身。

有没有人理解这一点...... :)我是否可以修改,修改或添加?

原始插件可以在这里找到: https://www.dropbox.com/s/4jzfpfpcccjtrj6/eipSoftwareOnlineUsers_v1.2.5b.zip?dl=0

我上面发布的代码来自文件:qry_lastposts.php位于eipSoftware \ lastposts \ qry。

感谢您的帮助!

此致

安德烈

1 个答案:

答案 0 :(得分:0)

Andre,&#34; Post ID&#34;您提到的(46965)实际上是线程ID。对于第三个&#34;帖子&#34;在该主题中,您的链接看起来像http://vi-control.net/community/threads/46965/#post-3884651,其中#post-3884651是帖子ID。

您的MySQL查询正在选择:

                        thread.last_post_id             as lastpostid,

因此,您希望自己的网址如下所示:

'http://vi-control.net/community/posts/'.$lastpostid.'/'

而不是当前用于线程的格式。如果你想从一开始就让它看起来像threads/THREADID/#post-POSTID,你还必须处理影响URL的分页,这会使事情复杂化。