查看提要是否提取成功

时间:2014-09-23 作者:gsmart

我正在尝试从我的一边到另一边获取特定的帖子提要。一切正常,我唯一需要检查的是,如果自定义字段未能成功获取提要,它应该返回错误或自定义消息。

这是我迄今为止尝试过的代码,我试图检查帖子标题长度,如果它大于零,则显示feed else,返回error。但它不起作用。任何想法。

    <?php
    include_once(ABSPATH . WPINC . \'/rss.php\');
    $feed = \'http://ar.mysite.com/feed/?translate_id=P1511\'; 
    $rss = fetch_feed($feed);
    $maxitems = $rss->get_item_quantity(1);
    $rss_items = $rss->get_items(0, $maxitems);  echo $maxitems ;
    //if ($rss_items):
    echo "<ul class=\'feedclass\'>\\n";
    foreach ( $rss_items as $item ) :
    $feedtitle = $item->get_title() ; // echo $feedtitle ;

    if (strlen($feedtitle) > 0) { 
    printf(\'<li><a href="%s">%s</a><p>%s</p></li>\',$item->get_permalink(),$item->get_title(),$item->get_description() );
    }
    else {
    echo \'This recipe is not translated yet\';
    }
    endforeach;
    echo "</ul>\\n";
    //endif;
    ?>
下面的代码在query\\u var中添加translate\\u id

    /**
    *
    * @param array $query_vars
    * @return array $query_vars
    */ 
    function my_query_vars( $query_vars ) 
    {
    $query_vars[] = \'translate_id\';
    return $query_vars;
    }
    add_filter( \'query_vars\', \'my_query_vars\' );

    /**
    * Filter the feed by the \'translate_id\' meta key 
    *
    * @param WP_Query object $query
    * @return void 
    */ 
    function my_pre_get_posts( $query ) 
    {
    // only for feeds
    if( $query->is_feed && $query->is_main_query() ) 
    {
    // check if the translate_id variable is set 
    if( isset( $query->query_vars[\'translate_id\'] ) 
    && ! empty( $query->query_vars[\'translate_id\'] ) )
    {

    // if you only want to allow \'alpha-numerics\':
    $translate_id =  preg_replace( "/[^a-zA-Z0-9]/", "", $query->query_vars[\'translate_id\'] ); 

    // set up the meta query for translate_id
    $query->set( \'meta_key\', \'translate_id\' );
    $query->set( \'meta_value\', $translate_id );
    }
    } 
    }

    add_action( \'pre_get_posts\', \'my_pre_get_posts\' );

1 个回复
SO网友:Howdy_McGee

fetch_feed() returns a WP_Error() 如果所讨论的源不存在或由于任何原因失败。如果我们只检查失败,我们可以检查返回的对象is_wp_error().

if ( ! is_wp_error( $rss ) ){
    // Assume the best, show feed
}
else{
    // Assume the worst, show message
}
如果feed确实返回valid但为空,我们可以执行您当前正在执行的操作,即尝试从有效feed中获取项目:

$maxitems = $rss->get_item_quantity(1);

如果$maxitems 为空或0,则我们知道提要是有效的,但为空。

结束