yandex 'ten gelen mail news

'Soru Cevap' forumunda ahmet tutak tarafından 25 Aralık 2014 tarihinde açılan konu

  1. ahmet tutak

    ahmet tutak Kayıtlı Kullanıcı

    Kimden: Bilge Bilir <haber@destek.yandex.com.tr>
    Konu: Yandex.Haberler servisinde yer alan feed'iniz hakkında

    İleti Gövdesi:
    Merhaba,

    Yandex Desteki Ekibinden Sizinle iletişime geçmekteyim. Yapılan incelemelerde bize yolladığınız feed'te hatalar mevcut. Şöyle ki, yandex:full-text tag'ini CDATA şeklinde yolladığınızda bazı tag'lerden iki tane oluşmaktadır. Bu da aşağıdaki gibi bir görüntüye sebebiyet vermektedir;
    http://haber.yandex.com.tr/yandsearch?text=gt+&&+lt&rpt=nnews2&rel=rel&grhow=clutop

    Lütfen feed'inizi düzenleyebilir misiniz?

    ------------------------------------------------------

    feed.php dosyası
    PHP:
    <?php
    header
    ('Content-Type: ' feed_content_type('rss-http') . '; charset=' get_option('blog_charset'), true);
    $more 1;
    $options get_option'yandex_news' );

    echo 
    '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'?>

    <rss version="2.0"
        xmlns:yandex="http://news.yandex.ru"
        xmlns:media="http://search.yahoo.com/mrss/"
    >

    <channel>
        <title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
        <link><?php bloginfo_rss('url'?></link>
        <description><?php bloginfo_rss("description"?></description>
      <image>
      <url><?php echo $options['image']; ?></url>
      </image>


        <?php    while( have_posts()) : the_post(); ?>
        <item>
            <title><?php the_title_rss() ?></title>
            <link><?php the_permalink_rss() ?></link>
            <author><?php the_author() ?></author>
            <pubDate><?php echo mysql2date('D, d M Y H:i:s +0300'get_post_time('Y-m-d H:i:s'true), false); ?></pubDate>
        <?php $content get_the_content_feed('rss2'); ?>
            <yandex:full-text><?php echo esc_textareastrip_tags$content ) ); ?></yandex:full-text>
        </item>
        <?php endwhile; ?>
    </channel>
    </rss>


    yandex-news dosyası
    PHP:
    <?php
    /*
    Plugin Name: Yandex News
    Author: Yevhen Amelin <yevhen.amelin@gmail.com>
    Description: Generates an XML feed to export news in the Yandex.News service
    Text Domain: yandex-news
    Version: 0.2
    */ 

    class YandexNews
    {
        private 
    $options;
        private 
    $feedname;

        public function 
    __construct()
        {
            
    $this->options get_option'yandex_news' );
            
    $this->feedname = ( !empty( $o['path'] ) ) ? $o['path'] : 'yandex';

            
    add_action'admin_menu', array( $this'add_settings_page' ) );
            
    add_action'admin_init', array( $this'page_init' ) );
            
    add_action'pre_get_posts', array( $this'query_alter' ) );
            
    add_action'init', array( $this'add_feed' ) );

            
    load_plugin_textdomain('yandex-news'falsebasenamedirname(
            
    __FILE__ ) ) . '/languages' );
        }

        public function 
    add_feed()
        {
            if ( empty( 
    $this->options['image'] ) )
                return;

            
    add_action'do_feed_'.$this->feedname, array( $this'do_feed' ) );

            
    add_rewrite_rule(
                
    'feed/' $this->feedname '/?$',
                
    'index.php?feed=' $this->feedname,
                
    'top'
            
    );
            
    flush_rewrite_rules();
        }

        public function 
    add_settings_page()
        {
            
    add_options_page(
                
    __'Yandex.News plugin settings page''yandex-news' ),
                
    __'Yandex.News''yandex-news' ), 
                
    'manage_options'
                
    'yandex-news-admin'
                array( 
    $this'create_settings_page' )
            );
        }

        public function 
    create_settings_page()
        {
            
    ?>
            <div class="wrap">
                <?php screen_icon(); ?>
                <h2><?php _e'Yandex News Settings''yandex-news' ?></h2>
                <form method="post" action="options.php">
                <?php
                    settings_fields
    'yandex_news_option_group' );  
                    
    do_settings_sections'yandex-news-admin' );
                    
    submit_button(); 
                
    ?>
                </form>
            </div>
            <?php
        
    }

        public function 
    page_init()
        {        
            
    register_setting(
                
    'yandex_news_option_group',
                
    'yandex_news',
                array( 
    $this'sanitize' )
            );

            
    add_settings_section(
                
    'yandex_news_feed_settings',
                
    __'Main Feed Settings''yandex-news' ),
                array( 
    $this'print_section_info' ),
                
    'yandex-news-admin'
            
    );  
           
            
    add_settings_field(
                
    'path',
                
    __'Path''yandex-news' ),
                array( 
    $this'path_callback' ),
                
    'yandex-news-admin',
                
    'yandex_news_feed_settings'
            
    );      

            
    add_settings_field(
                
    'image',
                
    __'Image''yandex-news' ),
                array( 
    $this'image_callback' ),
                
    'yandex-news-admin',
                
    'yandex_news_feed_settings'
            
    );
           
            
    add_settings_field(
                
    'categories',
                
    __'Categories''yandex-news' ),
                array( 
    $this'categories_callback' ),
                
    'yandex-news-admin',
                
    'yandex_news_feed_settings'
            
    );

        }

        public function 
    sanitize$input )
        {
            
    $new_input = array();
            if ( isset( 
    $input['path'] ) )
                
    $new_input['path'] = sanitize_text_field$input['path'] );

            
    $new_input['image'] = $this->sanitize_image$input['image'] );
           
            if ( isset( 
    $input['categories'] ) )
                foreach( 
    $input['categories'] as $category )
                    if ( 
    absint$category ) )
                        
    $new_input['categories'][] = $category;

            return 
    $new_input;
        }
       
        public function 
    sanitize_image$image=null ) {
            if ( !
    $image )
                
    $image $this->options['image'];

               
            
    $error false;
            if ( isset( 
    $image ) ) {
              
    $new_image esc_url_raw$image );
              
    $headers get_headers$new_imagetrue );
             
              if ( 
    mb_strpos$headers['Content-Type'], 'image' ) === false )
                  
    $error true;
            }
           
            if ( 
    strlen$new_image ) == || $error )
                
    add_settings_error(
                  
    'image',
                  
    esc_attr'settings_updated' ),
                  
    __('You must specify a valid image URL''yandex-news')
                );
           
            return 
    $new_image;
        }

        public function 
    print_section_info()
        {
            
    $this->sanitize_image();
            if ( 
    $this->options['image'] && !get_settings_errors'image' ) ) {
                echo 
    '<p style="color: green; font-weight: bold">' __'Your feed is active''yandex-news' ) . '</p>';
                
    printf'<p>' __'Feed URL: <a href="%s" target="_blank">%1$s</a>',
                
    'yandex-news' ) . '</p>'get_bloginfo('url') . '/feed/' .
                
    $this->feedname);
            }
            else {
                
    settings_errors'image'truetrue );
                echo 
    '<p class="error-message">' .
                    
    __'Your feed is not active''yandex-news' ) . '</p>';
            }
        }
       
        public function 
    path_callback()
        {
            
    printf(
                
    '<input class="regular-text" type="text" id="path"
                name="yandex_news[path]" value="%s" /><p class="description">' 
    .
                
    __('Feed name''yandex-news') . '</p>',
                
    $this->feedname
            
    );
        }

        public function 
    image_callback()
        {
            
    printf(
                
    '<input class="regular-text" type="text" id="image"
                name="yandex_news[image]" value="%s" /><p class="description">' 
    .
                
    __('Feed image''yandex-news') . ' (' .
                
    __('required field''yandex-news') . ')</p>'
                isset( 
    $this->options['image'] ) ? esc_attr(
                
    $this->options['image'] ) :
                
    ''
            
    );
        }
       
        public function 
    categories_callback()
        {
            
    $categories get_categories( array('hide_empty' => 0) );

            foreach( 
    $categories as $category ) {
                
    $state 0;
                if ( isset( 
    $this->options['categories'] ) and
                    
    in_array$category->cat_ID$this->options['categories'] ) )
                    
    $state 1;

                
    printf(
                    
    '<nobr style="background: #f7f7f7; padding: .5em 1em;
                    line-height: 2.5em"><input type="checkbox" id="category_%d"
                    name="yandex_news[categories][]" value="%1$d" %s /> %s</nobr> '
    ,
                    
    $category->cat_IDchecked$state1false ), $category->name
                
    );
            }
        }

        public function 
    query_alter$query )
        {
            if ( isset ( 
    $query->query_vars['feed'] ) and 
                 
    $query->query_vars['feed'] == $this->feedname ) {

                if ( 
    $this->options['categories'] ) {
                    
    $cats join','$this->options['categories'] );
                    
    $query->set'cat'$cats );
                }
            }
        }

        public function 
    do_feed()
        {
            
    load_templateplugin_dir_path__FILE__ ) . 'feed.php' );
        }

    }

    $yanews = new YandexNews();

    ?>
    buradaki neyi düzeltmem lazım arkadaşlar?
     
  2. mdmx

    mdmx Kayıtlı Kullanıcı

    Kod:
     <yandex:full-text><?php echo esc_textarea( strip_tags( $content ) ); ?></yandex:full-text>
    Satırındaki Wordpress'e ait olan esc_textarea fonksiyonu HTML etiketlerini düzenliyor. Yandex'in gönderdiği bağlantıda da bu düzenlemeden ötürü problem görünüyor. Satırı:
    Kod:
     <yandex:full-text><?php echo strip_tags( $content ); ?></yandex:full-text>
    şeklinde değiştirirsen sorun çözülecektir.
     
    ahmet tutak bunu beğendi.
  3. ahmet tutak

    ahmet tutak Kayıtlı Kullanıcı

    yaptım hocam ellerinize sağlık
     

Bu Sayfayı Paylaş