0

初めて投稿するので、間違っていたら教えてください!

WP をポータル ページとして使用して、Wordpress と Xenforo の両方を使用しています。どちらも独自のデータベースを持っています。Xenforo 専用に設計された、何年もサポートが継続されていない WP プラグインを使用しています。

問題: プラグインが Xenforo フォーラムから最新の投稿 (または最新の投稿) を取得し、WP のサイドバー ウィジェットに表示します。ただし、投稿リンクは、特定の投稿ではなくスレッドにつながります。

プラグインのコードを調べて、これを修正するために変更する必要があるコードの部分を見つけようとしました。何を探すべきかわかりません。

プラグインのコードは次のとおりです。

   <?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?threads/ORCHESTRAL-TOOLS-ANNOUNCES-SOLOISTS-SERIES--new-TECH-DEMOS を狙っているようです

投稿IDがそこにある場合でも: #46965

クリックすると、そのスレッドの最初の投稿にたどり着きますが、私が期待していた投稿ではありません。つまり、投稿自体に移動するのではなく、新しい投稿を見た最新のスレッドを表示しているようです。

誰かがこれを理解していますか... :)これを修正するために私ができる修正、変更、または追加はありますか?

元のプラグインはこちらにあります: https://www.dropbox.com/s/4jzfpfpcccjtrj6/eipSoftwareOnlineUsers_v1.2.5b.zip?dl=0

上記のコードは、eipSoftware\lastposts\qry にあるファイル qry_lastposts.php からの cam を投稿したものです。

助けてくれてありがとう!

よろしく、

アンドレ

4

1 に答える 1

0

アンドレ、あなたが言及した「投稿 ID」(46965) は、実際にはスレッド ID です。そのスレッドの 3 番目の「投稿」の場合、リンクはhttp://vi-control.net/community/threads/46965/#post-3884651where #post-3884651is the post ID のようになります。

MySQL クエリは次のものを選択しています。

                        thread.last_post_id             as lastpostid,

したがって、URL は次のようになります。

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

スレッド用の現在の形式の代わりに。最初から のように見せたい場合はthreads/THREADID/#post-POSTID、URL に影響を与えるページネーションにも対処する必要があり、事態が複雑になります。

于 2015-08-10T19:08:12.727 に答える