質問編集履歴

1

頂いた回答を元に修正を試みたコードに変更致しました。

2019/12/23 11:52

投稿

pineappleman
pineappleman

スコア26

test CHANGED
File without changes
test CHANGED
@@ -34,19 +34,81 @@
34
34
 
35
35
 
36
36
 
37
+
38
+
37
39
  ```php
38
40
 
39
- foreach ($rtn as $value) {
41
+ global $wpdb;
40
42
 
41
- $variable[] = $wpdb->get_row($wpdb->prepare("
42
43
 
43
- SELECT meta_value
44
44
 
45
- from $wpdb->postmeta
45
+ $numposts = $wpdb->get_var(
46
46
 
47
- where meta_key = '_keyname'
47
+ "SELECT count(*)
48
48
 
49
+ FROM $wpdb->posts
50
+
51
+ INNER JOIN $wpdb->postmeta pm
52
+
53
+ ON ($wpdb->posts.id = pm.post_id)
54
+
55
+ WHERE $wpdb->posts.post_status = 'publish'
56
+
57
+ AND $wpdb->posts.post_type = 'post_type'
58
+
59
+ AND pm.meta_key = '_keyname'
60
+
61
+ AND pm.meta_value
62
+
63
+ LIKE \"{$posttitleを代入した変数}%\"
64
+
65
+ ");
66
+
67
+ $numposts = number_format($numposts);
68
+
69
+
70
+
71
+ if (0 < $numposts)
72
+
73
+ {
74
+
75
+ global $wpdb;
76
+
77
+ $rtn = $wpdb->get_results("
78
+
79
+ SELECT id
80
+
81
+ FROM $wpdb->posts
82
+
83
+ INNER JOIN $wpdb->postmeta pm
84
+
85
+ ON ($wpdb->posts.id = pm.post_id)
86
+
87
+ WHERE $wpdb->posts.post_status = 'publish'
88
+
89
+ AND $wpdb->posts.post_type = 'post_type'
90
+
91
+ AND pm.meta_key = '_keyname'
92
+
93
+ AND pm.meta_value
94
+
95
+ LIKE \"{$posttitleを代入した変数}%\"
96
+
97
+ ");
98
+
99
+
100
+
101
+ foreach ($rtn as $value) {
102
+
103
+ $variable[] = $wpdb->get_row($wpdb->prepare("
104
+
105
+ SELECT meta_value
106
+
107
+ from $wpdb->postmeta
108
+
109
+ where meta_key = '_keyname'
110
+
49
- AND post_id = %d", $value->id) );
111
+ AND post_id = %d", $value->id) );
50
112
 
51
113
  }
52
114
 
@@ -99,3 +161,13 @@
99
161
  上記のコードになにか間違った記述はございませんでしょうか。
100
162
 
101
163
  ご教示頂けますと大変助かります。
164
+
165
+
166
+
167
+ ### 追記
168
+
169
+ - 投稿数で割る処理をしているため、評価値$staravg が5を超えることはありません。
170
+
171
+ - $numpostsの処理を追記しました。
172
+
173
+ - foreach ($variable as $value) のループで、$variable_work = $value->meta_value; が前任者作成部分でして、ワタシも完全に理解しておらず...