Fórum Brasileiro

[resolvido] Adicionar Custom Field ao Feed (7 posts)

  1. riccardob
    Membro
    Publicado 3 meses atrás #

    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?

  2. leogermani
    Moderador
    Publicado 3 meses atrás #

    oi ricardo,

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

    Leo,,

  3. riccardob
    Membro
    Publicado 3 meses atrás #

    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.

  4. leogermani
    Moderador
    Publicado 3 meses atrás #

    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,,

  5. riccardob
    Membro
    Publicado 3 meses atrás #

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

    Abs,
    Riccardo

  6. riccardob
    Membro
    Publicado 3 meses atrás #

    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>
  7. leogermani
    Moderador
    Publicado 3 meses atrás #

    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;
    }
    ?>

Resposta

Você deve fazer login para publicar.

About this Topic