質問編集履歴

5

文法の修正

2018/09/13 10:42

投稿

muro
muro

スコア99

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  if($term->count == 0) {
20
20
 
21
- var_dump($term);
21
+ wp_delete_term($term->term_id, "hogehoge");
22
22
 
23
23
  }
24
24
 
@@ -60,7 +60,7 @@
60
60
 
61
61
  if($term->count === 0) {
62
62
 
63
- var_dump($term);
63
+ wp_delete_term($term->term_id, "hogehoge");
64
64
 
65
65
  }
66
66
 
@@ -77,3 +77,11 @@
77
77
 
78
78
 
79
79
  わざわざすべてのタームを取得しなくても、投稿0件のタームだけ抜き出す方法はないでしょうか?
80
+
81
+
82
+
83
+ [追記]
84
+
85
+ 本質問を作成当初、0件だったときの処理をvar_dumpとしていましたが、正しくはwp_delete_termです。
86
+
87
+ すべてのタームが入った配列をvar_dumpしてもメモリリークとはならず、wp_delete_termのときに発生していたと思われます。

4

誤字

2018/09/13 10:42

投稿

muro
muro

スコア99

test CHANGED
File without changes
test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  しかし、タームも投稿数も何千件も存在するせいか、「Allowed memory size of 268435456 bytes exhausted (tried to allocate 466944 bytes) in /var/www/html/wp-includes/functions.php on line 3743」というエラーを起こしてしまいました。
42
42
 
43
- 一気にやるとメモリバーするのかと思って、100件ずつ処理するようにもしてみましたが、それでも同じエラーになってしまいます。
43
+ 一気にやるとメモリするのかと思って、100件ずつ処理するようにもしてみましたが、それでも同じエラーになってしまいます。
44
44
 
45
45
 
46
46
 
@@ -72,7 +72,7 @@
72
72
 
73
73
  次に、上記のようにタームのidだけの配列を取得して、その配列でforeachする方法に変えてみました。
74
74
 
75
- すると、いくつかの投稿0件のタームは取得できたのですが、途中で相変わらずメモリバーが発生してしまいました。
75
+ すると、いくつかの投稿0件のタームは取得できたのですが、途中で相変わらずメモリが発生してしまいました。
76
76
 
77
77
 
78
78
 

3

誤字

2018/09/13 07:53

投稿

muro
muro

スコア99

test CHANGED
File without changes
test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  ```php
48
48
 
49
- $ids = get_terms(filter_input(INPUT_POST, "tax"), [
49
+ $ids = get_terms("hogehoge", [
50
50
 
51
51
  "hide_empty" => 0,
52
52
 
@@ -56,11 +56,11 @@
56
56
 
57
57
  foreach($ids as $term_id) {
58
58
 
59
- $term = get_term($term_id, filter_input(INPUT_POST, "tax"));
59
+ $term = get_term($term_id, "hogehoge");
60
60
 
61
61
  if($term->count === 0) {
62
62
 
63
- wp_delete_term($term_id, filter_input(INPUT_POST, "tax"));
63
+ var_dump($term);
64
64
 
65
65
  }
66
66
 

2

文法の修正

2018/09/13 07:51

投稿

muro
muro

スコア99

test CHANGED
File without changes
test CHANGED
@@ -44,6 +44,8 @@
44
44
 
45
45
 
46
46
 
47
+ ```php
48
+
47
49
  $ids = get_terms(filter_input(INPUT_POST, "tax"), [
48
50
 
49
51
  "hide_empty" => 0,
@@ -64,6 +66,8 @@
64
66
 
65
67
  }
66
68
 
69
+ ```
70
+
67
71
 
68
72
 
69
73
  次に、上記のようにタームのidだけの配列を取得して、その配列でforeachする方法に変えてみました。

1

コードの追加

2018/09/13 07:50

投稿

muro
muro

スコア99

test CHANGED
File without changes
test CHANGED
@@ -44,4 +44,32 @@
44
44
 
45
45
 
46
46
 
47
+ $ids = get_terms(filter_input(INPUT_POST, "tax"), [
48
+
49
+ "hide_empty" => 0,
50
+
51
+ "fields" => "ids",
52
+
53
+ ]);
54
+
55
+ foreach($ids as $term_id) {
56
+
57
+ $term = get_term($term_id, filter_input(INPUT_POST, "tax"));
58
+
59
+ if($term->count === 0) {
60
+
61
+ wp_delete_term($term_id, filter_input(INPUT_POST, "tax"));
62
+
63
+ }
64
+
65
+ }
66
+
67
+
68
+
69
+ 次に、上記のようにタームのidだけの配列を取得して、その配列でforeachする方法に変えてみました。
70
+
71
+ すると、いくつかの投稿0件のタームは取得できたのですが、途中で相変わらずメモリオーバーが発生してしまいました。
72
+
73
+
74
+
47
75
  わざわざすべてのタームを取得しなくても、投稿0件のタームだけ抜き出す方法はないでしょうか?