2016-05-13 2 views
1

Gibt es eine Möglichkeit, alle WordPress Post Kommentare in einem verschachtelten (threaded) PHP-Objekt oder Array zu bekommen?Gibt es eine Möglichkeit, alle Post-Kommentare in WordPress in einem verschachtelten PHP-Objekt oder Array zu bekommen?

Der Grund, warum ich ein verschachteltes Objekt brauche, liegt darin, dass dieses verschachtelte Objekt dann einfach an eine Template-Engine übergeben werden kann, um eine HTML-Vorlage mit allen Kommentaren und ihren verschachtelten Antworten korrekt anzuzeigen.

Die erforderliche/ideales Format für die Kommentare Objekt würde wie so sein:

{ 
    "015":{ 
     "comment_content":"Nullam in magna quis libero posuere vestibulum.", 
     "comment_date":"2016-05-13 00:20:32", 
     "other_comment_args":"...", 
     "replies":{ 

     } 
    }, 
    "837":{ 
     "comment_content":"Nullam in magna quis libero posuere vestibulum.", 
     "comment_date":"2016-05-13 00:20:32", 
     "other_comment_args":"...", 
     "replies":{ 
     "015":{ 
      "comment_content":"Nullam in magna quis libero posuere vestibulum.", 
      "comment_date":"2016-05-13 00:20:32", 
      "other_comment_args":"...", 
      "replies":{ 
       "015":{ 
        "comment_content":"Nullam in magna quis libero posuere vestibulum.", 
        "comment_date":"2016-05-13 00:20:32", 
        "other_comment_args":"...", 
        "replies":{ 

        } 
       }, 
       "234":{ 
        "comment_content":"Nullam in magna quis libero posuere vestibulum.", 
        "comment_date":"2016-05-13 00:20:32", 
        "other_comment_args":"...", 
        "replies":{ 

        } 
       } 
      } 
     }, 
     "125":{ 
      "comment_content":"Nullam in magna quis libero posuere vestibulum.", 
      "comment_date":"2016-05-13 00:20:32", 
      "other_comment_args":"...", 
      "replies":{ 

      } 
     }, 
     "654":{ 
      "comment_content":"Nullam in magna quis libero posuere vestibulum.", 
      "comment_date":"2016-05-13 00:20:32", 
      "other_comment_args":"...", 
      "replies":{ 

      } 
     } 
     } 
    }, 
    "785":{ 
     "comment_content":"Nullam in magna quis libero posuere vestibulum.", 
     "comment_date":"2016-05-13 00:20:32", 
     "other_comment_args":"...", 
     "replies":{ 
     "015":{ 
      "comment_content":"Nullam in magna quis libero posuere vestibulum.", 
      "comment_date":"2016-05-13 00:20:32", 
      "other_comment_args":"...", 
      "replies":{ 

      } 
     }, 
     "231":{ 
      "comment_content":"Nullam in magna quis libero posuere vestibulum.", 
      "comment_date":"2016-05-13 00:20:32", 
      "other_comment_args":"...", 
      "replies":{ 

      } 
     }, 
     "554":{ 
      "comment_content":"Nullam in magna quis libero posuere vestibulum.", 
      "comment_date":"2016-05-13 00:20:32", 
      "other_comment_args":"...", 
      "replies":{ 

      } 
     } 
     } 
    } 
} 

ich in ausgesehen haben mit der Wordpress-Funktion ‚get_comments‘. Dies liefert jedoch ein Array aller Kommentare auf einer einzigen Ebene. Alle untergeordneten Comments (Antwortkommentare) verfügen über die Eigenschaft "comment_parent" mit der ID des übergeordneten Kommentars. Hier sehen Sie, wie eine print_r des zurückgegebenen Werts der Funktion aussieht.

[1] => WP_Comment Object 
    (
     [comment_ID] => 5644 
     [comment_parent] => 0 
     [comment_post_ID] => 332 
     [comment_author_email] => [email protected] 
     [comment_date] => 2016-05-13 00:20:32 
     [comment_content] => i. Nullam in magna quis libero posuere vestibulum. Donec mi leo, elementum ut. 
    ) 
[2] => WP_Comment Object 
    (
     [comment_ID] => 8738 
     [comment_parent] => 5644 
     [comment_post_ID] => 332 
     [comment_author_email] => [email protected] 
     [comment_date] => 2016-05-13 00:20:32 
     [comment_content] => i. Nullam in magna quis libero posuere vestibulum. Donec mi leo, elementum ut. 
    ) 
[3] => WP_Comment Object 
    (
     [comment_ID] => 7758 
     [comment_parent] => 5644 
     [comment_post_ID] => 332 
     [comment_author_email] => [email protected] 
     [comment_date] => 2016-05-13 00:20:32 
     [comment_content] => i. Nullam in magna quis libero posuere vestibulum. Donec mi leo, elementum ut. 
    ) 

Ein benutzerdefinierter Kommentar Gehhilfe kann hilfreich sein, aber ich komme ich nicht über irgendwelche Beispiele, bei denen ein Kommentar Gehhilfe ein verschachteltes Objekt mit Kommentaren Objekten bevölkern würde.

Vielen Dank im Voraus.

Antwort

0

Wenn Sie verschachtelte Kommentare verwenden, um ein Thema zu machen, können Sie diese API versuchen: wp_list_comments

wp_list_comments kann Ihnen helfen, einen HTML-Code enthalten Kommentare Daten

bitte ref erzeugen: https://codex.wordpress.org/Function_Reference/wp_list_comments

+0

In dem Bemühen, Um Logik von Präsentationsmarkierung zu trennen, wollen wir eine verführerische Engine wie Zweig, Schnurrbart oder RegenTpl verwenden. Dies bedeutet, dass Theme-Ersteller einfache HTML-Vorlagen anstelle von gemischten PHP- und HTML-Dateien verwenden können. Vielleicht gibt es eine Möglichkeit, das Ergebnis von "get_comments" in ein hierarchisches verschachteltes Multi-Level-Objekt umzuformatieren. – Norman

Verwandte Themen