Suporte » Desenvolvendo com WordPress » Adicionar Custom Field ao Feed

  • Resolvido riccardob

    (@riccardob)


    Despois que conheci o More Fields e li alguns sites sobre como fazer Custom Fields específicos e carregá-los em meu blog a minha duvida que restou e que ainda não encontrei solução é: como adicionar quantos campos eu desejar no meu FEED?

    Eu não sou programador mas se o código é legível eu entendo onde alterar ou acrescentar a informação, o problema é que eu não sei como fazer isso de modo algum e já procurei nos sites americanos, espanhois, italianos e até no codex e não achei nada sobre isso.

    Alguém tem alguma ideia de como fazer?

Visualizando 6 respostas - 1 até 6 (de um total de 6)
  • oi ricardo,

    não entendi direito sua dúvida. O que vc quer dizer com “adicionar quantos campos desejar no FEED” ? Explica melhor.

    Leo,,

    Criador do tópico riccardob

    (@riccardob)

    Então Leo,
    é o seguinte, eu tenho um site onde eu criei vários Custom Fields, porém eu notei que estes campos não são carregados dentro do Feed, eu preciso carregar estes CF dentro do Feed também, pois em outro site eu vou extrair estes dados.

    vc se refere ao feed RSS?

    o RSS tem um padrão dele, que nunca vai incluir os custom fields. Para saber mais sobre o padrão RSS veja:

    http://cyber.law.harvard.edu/rss/rss.html

    Se você quiser que seus custom fields apareçam no RSS, você tem que coloca-los de alguma maneira dentro do conteúdo do post, ou fazer alguma outra gambiarra criando um filtro na criação do RSS do wordPress e inserindo seus dados em algum lugar.

    Leo,,

    Criador do tópico riccardob

    (@riccardob)

    Blz Leo,
    se eu encontrar algo ou um modo de fazer isso eu posto aqui, BLZ.

    Abs,
    Riccardo

    Criador do tópico riccardob

    (@riccardob)

    Encontrei uma forma, sem eu precisar mexer no core do WP, basta adicionar criar uma página chamada Feed e associar ao arquivo com o nome custom-feed.php, dentro deste arquivo basta adicionar o seguinte código:

    <?php
    /*
    Template Name: Custom Feed template
    */
    
    $numposts = 10;
    
    function livexp_rss_date( $timestamp = null ) {
      $timestamp = ($timestamp==null) ? time() : $timestamp;
      echo date(DATE_RSS, $timestamp);
    }
    
    function livexp_rss_text_limit($string, $length, $replacer = '...') {
      $string = strip_tags($string);
      if(strlen($string) > $length)
        return (preg_match('/^(.*)\W.*$/', substr($string, 0, $length+1), $matches) ? $matches[1] : substr($string, 0, $length)) . $replacer;
      return $string;
    }
    
    $posts = query_posts('showposts='.$numposts);
    
    $lastpost = $numposts - 1;
    
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    ?>
    
    <rss version="2.0"
    	xmlns:content="http://purl.org/rss/1.0/modules/content/"
    	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    	xmlns:dc="http://purl.org/dc/elements/1.1/"
    	xmlns:atom="http://www.w3.org/2005/Atom"
    	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    	>
    
    	<channel>
    		<title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
    		<link><?php bloginfo_rss('url') ?></link>
    		<description><?php bloginfo_rss('description') ?></description>
    		<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
    		<docs>http://backend.userland.com/rss092</docs>
    		<language><?php echo get_option('rss_language'); ?></language>
    		<?php do_action('rss_head'); ?>
    
    	<?php foreach ($posts as $post) { ?>
    
    	  <item>
    		<title><?php echo get_the_title($post->ID); ?></title>
    		<link><?php echo get_permalink($post->ID); ?></link>
    		<description><?php echo '<![CDATA['.livexp_rss_text_limit($post->post_content, 500).'<p>Saiba mais: <a href="'.get_permalink($post->ID).'">'.get_the_title($post->ID).'</a></p>]]>';  ?></description>
    
    		<extra><![CDATA[<p><strong>Texto e formatação desejada:</strong> <?php echo get_post_meta($post->ID, "custom-field-personalizado", true); ?></p>]]></extra> <!-- É aqui que vai o código do Custom Field desejado ou desejados. //-->
    
    		<pubDate><?php livexp_rss_date( strtotime($post->post_date_gmt) ); ?></pubDate>
    		<guid><?php echo get_permalink($post->ID); ?></guid>
    	  </item>
    	<?php } ?>
    	</channel>
    </rss>

    oi Ricardo,

    Como vc viu, vc está colocando seus metadado dentro do conteúdo do post, como eu tinha dito que seria um jeito. E, nesse caso, tem um jeito ainda mais fácil de fazer isso, criando um filtro que adiciona seus metadados ao conteúdo quando for gerar o feed. Mais ou menos assim:

    <?php
    // no arquivo functions.php
    add_filter('the_content', 'minha_funcao');
    function minha_funcao($content) {
        if (is_feed()) {
            // pega os metadados
            $meta =  get_post_custom(get_the_ID());
            // insere os metadados no fim do conteúdo.. aí vc pode colocar BRs e qq elemento html que quiser
            $content .= $meta['meu_metadado'][0];</p>
        }
        return $content;
    }
    ?>
Visualizando 6 respostas - 1 até 6 (de um total de 6)
  • O tópico ‘Adicionar Custom Field ao Feed’ está fechado para novas respostas.