web-dev-qa-db-fra.com

Erreur fatale: appel de la méthode non définie WP_Error :: get_item_quantity ()

J'ai mis en place un moyen d'afficher le flux Twitter sans plug-in. Cela a fonctionné pendant des semaines (voire des mois, sur un site différent), mais me pose maintenant des problèmes. Voici l'erreur:

Erreur fatale: appel de la méthode non définie WP_Error :: get_item_quantity () dans ... home.php à la ligne 27

Ligne 27: $ maxitems = $ rss-> get_item_quantity (3);

<?php
include_once(ABSPATH . WPINC . '/feed.php');
$rss = fetch_feed('https://api.Twitter.com/1/statuses/user_timeline.rss?screen_name=urbanpalatela');
$maxitems = $rss->get_item_quantity(3);
$rss_items = $rss->get_items(0, $maxitems);
?>

<ul>
<?php if ($maxitems == 0) echo '<li>No items.</li>';
else
// Loop through each feed item and display each item as a hyperlink.
foreach ( $rss_items as $item ) : ?>
<li>
<a href='<?php echo $item->get_permalink(); ?>'>
<?php echo str_replace('UrbanPalateLA: ', '&bull;', $item->get_title()); ?>
</a>
</li>
<?php endforeach; ?>
</ul>

Des idées ce qui pourrait être à l'origine de l'erreur?

2
user1255049

Je dirais que vous recevez probablement un WP_Error au premier passage.

autour des lignes $maxitems et $rss_items, ajoutez:

if( ! is_wp_error( $rss ) ) {
    $maxitems = $rss->get_item_quantity(3);
    $rss_items = $rss->get_items(0, $maxitems);
}

Comme on le voit dans le exemple .

1
Eric Holmes

L'URL Twitter ne semble pas être valide. Vous pouvez éviter cette erreur de deux manières, car elle repose sur une tierce partie.

Commencez par vérifier si le flux est vide avant d'utiliser $maxitems, pas après.

Par exemple:

include_once(ABSPATH . WPINC . '/feed.php');
$rss = fetch_feed('https://api.Twitter.com/1/statuses/....');

if ($rss->get_item_quanity != 0) { 
   $maxitems = $rss->get_item_quantity(3);
   //rest of your code..
} else { 
   echo 'No feed available'; }

Edit: l'exemple d'Eric est probablement meilleur car il sera traité par WP à l'aide de if (!is_wp_error( $rss ) )

En second lieu votre URL Twitter ne renvoie rien, donc l'erreur, cela pourrait être parce que l'API a changé, vous devrez vous référer aux documents Twitter, https://dev.Twitter.com/docs/api/1.1/ get/statuses/user_timeline

0
Wyck