I want my comment results to put inside anoher result.
I want this result
$args = array(
'post_id' =>$post->ID,
'status' => 'approve',
'type' => 'review_comment',
);
$comments = get_comments( $args );
$abb = $comment->comment_content;
$acc = get_comment_meta($comment->comment_ID, COMMENT_TITLE_METAKEY, true);
$add = get_comment_meta($comment->comment_ID, COMMENT_RATING_METAKEY, true);
$aee = get_comment_date( 'd\/m\/Y' );
$aff = get_the_title();
$agg = $comment->comment_author;
$comlist = "review" => [
"@type" => "Review",
"headline" => $acc,
"reviewbody" => $abb,
"datePublished" => $aee,
"itemReviewed" => [
"@type" => "Organization",
"name" => $aff,
],
"author " => [
"@type" => "Person",
"name" => $agg,
],
];
$comlistall = foreach ( $comments as $comment ){
$comlist ;
};
to put inside this result.
<?php
$rtitlez = get_the_title();
$rimgz = get_the_post_thumbnail_url(get_the_ID(), 'full');
$rvaluez = get_post_meta($post->ID, 'comments_rating_value', true);
$rcountz = get_post_meta($post->ID, 'comments_rating_count', true);
$result = [
"@context" => "/",
"@type" => "Organization",
"name" => $rtitlez,
"image" => $rimgz,
"aggregateRating" => [
"@type" => "AggregateRating",
"ratingValue" => $rvaluez,
"bestRating" => "5",
"worstRating" => "1",
"ratingCount" => $rcountz
],
/*I want here $comlistall*/
]
;?>
<script type="application/ld+json"><?php echo json_encode($result); ?></script>
How do I do that?
I want my comment results to put inside anoher result.
I want this result
$args = array(
'post_id' =>$post->ID,
'status' => 'approve',
'type' => 'review_comment',
);
$comments = get_comments( $args );
$abb = $comment->comment_content;
$acc = get_comment_meta($comment->comment_ID, COMMENT_TITLE_METAKEY, true);
$add = get_comment_meta($comment->comment_ID, COMMENT_RATING_METAKEY, true);
$aee = get_comment_date( 'd\/m\/Y' );
$aff = get_the_title();
$agg = $comment->comment_author;
$comlist = "review" => [
"@type" => "Review",
"headline" => $acc,
"reviewbody" => $abb,
"datePublished" => $aee,
"itemReviewed" => [
"@type" => "Organization",
"name" => $aff,
],
"author " => [
"@type" => "Person",
"name" => $agg,
],
];
$comlistall = foreach ( $comments as $comment ){
$comlist ;
};
to put inside this result.
<?php
$rtitlez = get_the_title();
$rimgz = get_the_post_thumbnail_url(get_the_ID(), 'full');
$rvaluez = get_post_meta($post->ID, 'comments_rating_value', true);
$rcountz = get_post_meta($post->ID, 'comments_rating_count', true);
$result = [
"@context" => "https://schema/",
"@type" => "Organization",
"name" => $rtitlez,
"image" => $rimgz,
"aggregateRating" => [
"@type" => "AggregateRating",
"ratingValue" => $rvaluez,
"bestRating" => "5",
"worstRating" => "1",
"ratingCount" => $rcountz
],
/*I want here $comlistall*/
]
;?>
<script type="application/ld+json"><?php echo json_encode($result); ?></script>
How do I do that?
Share Improve this question asked Feb 6, 2020 at 6:45 BikramBikram 3386 silver badges22 bronze badges1 Answer
Reset to default 1Run the loop in advance and populate an array, which in turn you include in the $result
afterward.
<?php
// Create an empty array
$comlistall = array();
foreach ( $comments as $comment ){
$comlistall[] = $comment; // <= Populate the array with the comments in the loop
};
$rtitlez = get_the_title();
$rimgz = get_the_post_thumbnail_url(get_the_ID(), 'full');
$rvaluez = get_post_meta($post->ID, 'comments_rating_value', true);
$rcountz = get_post_meta($post->ID, 'comments_rating_count', true);
$result = [
"@context" => "https://schema/",
"@type" => "Organization",
"name" => $rtitlez,
"image" => $rimgz,
"aggregateRating" => [
"@type" => "AggregateRating",
"ratingValue" => $rvaluez,
"bestRating" => "5",
"worstRating" => "1",
"ratingCount" => $rcountz
],
"comlistall" => $comlistall, // insert the comment array in your $results array
];
?>
<script type="application/ld+json"><?php echo json_encode($result); ?></script>
Update
If you only want certain attributes from the comments, simply create your own array with the attributes you want. In this example $comment
is an array with the attributes. Modify to your needs.
// ...
foreach ( $comments as $comment ){
$c = [
"@type" => "Review",
"headline" => $comment["headline"],
"reviewbody" => $comment["reviewbody"],
"datePublished" => $comment["datePublished"],
"itemReviewed" => [
"@type" => "Organization",
"name" => $comment["name"],
],
"author " => [
"@type" => "Person",
"name" => $comment["authorname"],
],
];
$comlistall[] = $c;
};
// ...