Suporte » Questões avançadas » Problema com este codigo…. "sprintf"

  • Olá!

    Tenho o seguinte código escrito no functions.php (que depois leva uma chamada da template com o id do blog) que irá buscar os ultimos posts a um blog dentro da rede Multisite:

    function show_blog_posts( $_blog_id ){
     global $wpdb, $table_prefix, $blog_id, $switched, $switched_stack, $wp_roles, $wp_object_cache;
     if( !$wpdb->get_var( $wpdb->prepare( "SELECT * FROM $wpdb->blogs WHERE blog_id = %s" ), $_blog_id ))
     return;
     switch_to_blog( $_blog_id );
     query_posts(array('post_type'=>'post','post_status'=>'publish','showposts'=>'5'));
     if( have_posts()):
     echo '<ul>';
     while(have_posts()): the_post();
     echo sprintf( '<li><a href="%1$s" target="_blank">%2$s<span><strong>%3$s</strong><br>%4$s</span></a></li>', get_permalink(), the_post_thumbnail('thumbnail'), get_the_title(), the_time('d/m/Y'));
     endwhile;
     echo '</ul>';
     endif;
     wp_reset_query();
    restore_current_blog();
    }

    e está a dar-me o seguinte erro:

    Warning: sprintf() [function.sprintf]: Too few arguments in /home/janelaur/public_html/wp-content/themes/jurb2012/functions.php on line 378

    Ora bem… se eu colocar có a string “get the title” e a “get_permalink” ele funciona bem… mas ao adicionar os restantes, dá-me este erro…

    Eu não sou perito em php, e esta do “sprintf” é nova para mim… alguém me pode ajudar sobre o que está errado aqui?

    … e obrigado pela ajuda, antes de mais.

A visualizar 7 respostas - de 1 a 7 (de um total de 7)
  • Porque não estás a usar o mesmo numero de parâmetros que estás a pedir ( 4 neste caso )

    Por exemplo, o the_post_thumbnail não retorna nada, simplesmente faz “echo” da imagem, poderá ser por isso.

    PS: não sou a favor do uso de queries directas a base de dados quando não se está familiarizado com o PHP

    Thread Starter Bruno Rosa

    (@janelaurbana)

    Eu sei, mas não encontro um plugin que me faça o que quero e não tenho um programador fantástico a trabalhar comigo 🙂

    mas… não tenho 4? então… “=”%1$s” target=”_blank”>%2$s<span>%3$s
    %4$s</span>” (4)
    +
    get_permalink(), the_post_thumbnail(‘thumbnail’), get_the_title(), the_time(‘d/m/Y’)); (outros 4)…

    eu tive a ler no manual de php e eles falam lá de outras opções para além do “s” que quer dizer “string”… não sei se para algum destes “pedidos” deveria levar alguma outra letra…

    Mas antes, consegui mostrar a imagem, exactamente com esta string… mas o titulo desaparecia….

    (codigo faz-me doer a cabeça… 🙁 )

    conforme disse, o “the_post_thumbnail” não retorna informação, mas sim faz “echo”, logo não faz nada nessa função.

    Conseguirás se colocares invés de the_post_thumbnail um “get_the_post_thumbnail( null, ‘thumbnail’)”

    (Código é a minha profissão… 🙂 )

    Thread Starter Bruno Rosa

    (@janelaurbana)

    já consegui qualquer coisa com esta alteração! YEY! …

    agora, surgiu outro problema, que era o mesmo da imagem (antes deste post)… ou seja, a data aparece fora do
    <li></li>

    pelo código que eu faço no echo, a the time devia ficar dentro das tags li, mas no resultado, aparece o seguinte:

    12/08/2011<li><a href="..." target="_blank"><img width="137" height="100" src="..." class="attachment-thumbnail wp-post-image" alt="nike_hyperfuse" title="nike_hyperfuse" /><span><strong>Nike Sportswear – The Hyperfuse Collection</strong><br></span></a></li>

    deverei substituir o the_time por outra coisa qualquer?

    (NÃO QUERES TRABALHAR COMIGO? 🙂 )

    nesse caso, é a mesa alteração, pois faz “echo” e não retorna valores para o sprintf, troca por get_the_time(‘d/m/Y’), e , caso tenhas algum filtro para as datas, terás de colocar apply_filters(‘the_time’, get_the_time(‘d/m/Y’), ‘d/m/Y’)

    ( Tem o meu contacto, basta enviar e-mail com projecto e orçamento, para eu aceitar é que já é outra história^^ )

    Thread Starter Bruno Rosa

    (@janelaurbana)

    yey! worked!

    (quando arranjar um orçamento, prometo que usarei este contacto!! 🙂 )

    Thread Starter Bruno Rosa

    (@janelaurbana)

    Pedro, só mais uma questão rápida que não tem nada a ver com este assunto :$ (desculpa estar a abusar)…

    Sabes como é que, neste novo sistema de MENU do wordpress dá para colocar um menu de popup? (que abra uma janela popup com medidas X)?

    Grazie Mille! Prego! Parafuso!

A visualizar 7 respostas - de 1 a 7 (de um total de 7)
  • O tópico ‘Problema com este codigo…. "sprintf"’ está fechado a novas respostas.