I have a custom function that pulls in (3) posts from another WordPress blog, and it’s pulling them from specific categories I specify via a shortcode.
Now, with that said, I cannot get it to function and display the actual image, as I can only get it to show the featured Image’s (media attachment’s) ID itself.
Here is my functional code, which works except the image is not displayed, instead it’s the images ID (numerical value)
function feedpuller_func($atts)
{
$url = $atts['url'];
$count = ($atts['count'])?$atts['count']:'3';
if($atts['catid'])
{
$cat = '?categories='.$atts['catid'].'&per_page='.$count;
$response = wp_remote_get( $url.'/wp-json/wp/v2/posts/?_embed'.$cat );
}
else if ($atts['slug'])
{
$slug = $atts['slug'];
echo $url . '/wp-json/wp/v2/categories?slug='.$slug;
$responseslug = wp_remote_get($url . '/wp-json/wp/v2/categories?slug='.$slug );
$postdata = json_decode( wp_remote_retrieve_body( $responseslug ) );
if($postdata)
$catid = $postdata[0]->id;
else
echo 'no record against this slug';
if($catid)
{
$cat = '?categories='.$catid.'&per_page='.$count;
$response = wp_remote_get( $url.'/wp-json/wp/v2/posts/?_embed'.$cat );
}
}
else
$cat = '';
if( is_wp_error( $response ) ) {
return;
}
$posts = json_decode( wp_remote_retrieve_body( $response ) );
if( empty( $posts ) ) {
return;
}
if( !empty( $instance['title'] ) ) {
echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $args['after_title'];
}
if( !empty( $posts ) ) {
echo '<ul class="feedothersite">';
foreach( $posts as $post ) { //echo '<pre>'; print_r($post);
echo '<li><a href="' . $post->link . '">' . '<img src="' . $post->featured_media . '">' . '<br>'. $post->title->rendered .'<br>'. $post->excerpt->rendered . '</a></li>';
}
echo '</ul>';
}
}
add_shortcode("feedpuller","feedpuller_func");
EDIT: I do NOT want to use a plugin already made, and also I have tried the solutions at the related post, but my functions differ because I am displaying posts from certain categories, and typical posts are pulled and displayed without these parameters.
Suggested Method (I know this works for regular posts)
/?rest_route=/wp/v2/posts&_embed
/wp-json/wp/v2/posts?_embed
But mine are called like this:
/wp-json/wp/v2/categories?slug='.$slug