プロが教える店舗&オフィスのセキュリティ対策術

https://imgur.com/R1zN8Va.jpg
既存の出力したコメントフォームに返信欄をあとつけするために方法を調べたところ、下記の方法が出てきました。全体で何件目の投稿かをSQLで出力したいのですが、投稿数のテーブルから何番目の記事か判断させる方法がわかりません。どうすればいいのでしょうか?SELECT T1.no, T1.name, T1.title, T1.jikan, の部分を書き換えたいが、どうすればいいのかわからない
SQLの使い方をまだいまいち理解できていないので、アドバイスお願いいたします。

//参考サイト
https://oshiete.goo.ne.jp/qa/1520509.html

//記事総件数を取得
<?php
$numposts = $wpdb->get_var("SELECT count(*) FROM $wpdb->posts WHERE post_status = 'publish'
/* カスタムフィールだが必要かどうか AND post_type = 'shop'*/");
?>

//全体で何件目の投稿
SELECT T1.no, T1.name, T1.title, T1.jikan, COUNT(T2.no) as bangou
FROM table_namae as T1,
table_namae as T2
WHERE T1.no = 115
AND T1.jikan >= T2.jikan
GROUP BY T1.no;


※実装予定の方法
最初の記事を書き込む際に、主キーとなる記事連番(何番目の投稿かを知る為、また主キー=一意のキーなので連番にします)を1とします。

続いて、記事番号を連番で1にします。

さらに、1つ目の記事の1番目の投稿ということで、記事内投稿番号に1を登録します。

これにて、最初の記事ば1番目の記事で1番目のレスということが紐付けできます。

1 / 1 / 1 → 1番左の数字は主キー(=全体で何件目の投稿) / 1番目の記事 / 記事内で1番目の投稿

実装済みのコメント欄

functions.php
----
// カスタマイズコメントフォーム
if (!function_exists('custom_comment_form')) {
function custom_comment_form($args)
{
// 「コメントを残す」を削除
$args['title_reply'] = '';
//コメント欄の前に表示する文字列の削除 ※デフォルトではコメント
$args['comment_field'] = '<p class="comment-form-comment"><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>';
//「admin としてログイン中。ログアウトしますか ? * が付いている欄は必須項目です」を削除
$args['logged_in_as'] = '';
// 「メールアドレスが公開されることはありません」を削除
$args['comment_notes_before'] = '';
return $args;
}
}
add_filter('comment_form_defaults', 'custom_comment_form');
// カスタマイズコメントフォームフィールド
if (!function_exists('custom_comment_form_fields')) {
function custom_comment_form_fields($arg)
{
// コメントからウェブサイトとEmailを削除
$arg['url'] = '';
$arg['email'] = '';
return $arg;
}
}
add_filter('comment_form_default_fields', 'custom_comment_form_fields');
----


----
comments_template();
----

comments.phpはこちら。
----
<div id="comments" class="comments">
<h3 id="resp"><?php the_title(); ?>へのコメント</h3>
<?php if (have_comments()) { //コメントがあったらコメントリストを表示する?>
<ol class="commets-list">
<?php wp_list_comments(); //コメント出力?>
</ol>
<?php
}
comment_form();
?>
</div>
----

A 回答 (1件)

質問は「全体で何件目の投稿かをSQLで出力したい」だけでよろしいでしょうか?



-- 記事番号Xが、投稿テーブル内の時間順で何番目か判断する SQL
select count(*)+1 as 順番 from 投稿
where 時間 < (select 時間 from 投稿 where 記事番号 = X)
and post_status = 'publish' -- 必要に応じて
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
質問が不足しているようですみません。

不特定の記事に対しての全体で何件目の投稿かを判断する?情報が必要ですが、この場合はSQLではなくPHPになるのでしょうか?

厳密にいうと、ある投稿のコメント欄に返信機能をつけたいので。
記事1つ1つに何番目の記事か判別させるようなコードを組みたいです。

お礼日時:2022/05/11 14:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!