ユーザーが WordPress で行う特定のアクションを記録するテーブルが必要です。
今のところ、これは私がキャンプしているデータベース スキーマです。
id bigint(20) NOT NULL AUTO_INCREMENT,
uid bigint(20) NOT NULL,
type VARCHAR(256) NOT NULL,
data1 TEXT NOT NULL,
data2 TEXT NOT NULL,
data3 TEXT NOT NULL,
timestamp bigint(20) NOT NULL,
UNIQUE KEY id (id)
明確にさせてください:
uid: User ID of the wordpress user
type: Type of action the user made (can be 'comment', 'new_post', 'login', etc)
data1/2/3: additional data (for example, ID of comment or post made)
ログを表示するには、データベースにクエリを実行し、特定のフィルターを実行して、その特定のログに表示するテキストを取得します。したがって、次のように機能します。
if( $type == 'comment') {
$comment = get_comment( $data1 );
$user = get_user($uid);
echo "User {$user->name} has made a <a href='{$comment->permalink}'>comment</a>";
}
これは物事を行う最も効率的な方法ですか?HTMLをログテーブルに保存して出力したくないので、私にはかなり問題ないようです。
ただし、特定の条件が満たされたときに特定のログエントリを非表示にしたい場合に問題が発生します。たとえば、コメントがなくなった場合、そのエントリを非表示にしたいとします。これにより、ページネーションにいくつかの問題が発生します。これを克服する方法について何か提案はありますか?
ありがとう!
編集:
myplugin_transactions
id bigint(20) NOT NULL AUTO_INCREMENT,
user_id bigint(20) NOT NULL,
type VARCHAR(256) NOT NULL,
timestamp bigint(20) NOT NULL,
UNIQUE KEY id (id)
myplugin_meta
id bigint(20) NOT NULL AUTO_INCREMENT,
txn_id bigint(20) NOT NULL,
key VARCHAR(256) NOT NULL,
data TEXT NOT NULL,
UNIQUE KEY id (id)
通常 data1 が「x」であり、data2 が「y」である myplugin_transactions から * を選択したいとします。この場合はどうすればいいですか?
SELECT * FROM myplugin_transactions LEFT JOIN myplugin_meta ON myplugin_transactions.id = myplugin_meta.txn_id WHERE ( ... ? )