这是我第一次在这里发帖,所以如果我做错了什么,请告诉我!
我正在使用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无关。例如,当我点击列表中的第一个帖子时:
我看到它瞄准线程, ?的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。
感谢您的帮助!
此致
安德烈
答案 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的分页,这会使事情复杂化。