Home › Forum › Amministrazione WP › Commenti in categoria
-
AutorePost
-
-
19 Febbraio 2006 alle 23:06 #1044AndreaPaiolaPartecipante
Ho creato il file category.php e tramite i commenti condizionali e il loop son riuscito a fargli mostrare i il primo post di una determinata categoria… ma i commenti non riesco a farglieli mostrare.
Ecco un pezzo del codice:
<div class="box">
<?php
if (is_category('Articoli')){
echo('<h3>Ultimo articolo pubblicato.</h3>');
query_posts('category_name=Articoli&showposts=1');
while (have_posts()) : the_post();
?>
<h1><?php the_title(); ?></h1>
<small>pubblicato il <?php the_time('j F Y') ?> da <?php the_author() ?></small>
<?php
the_content();?>
<div class="puoi">
<p>
Classificato in <?php the_category(', ') ?>.<br />
<?php comments_rss_link('RSS 2.0'); ?> |
<?php if (('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
// Sia i commenti che i Ping sono aperti ?>
<a href="#respond">inviare un commento</a> | <a href="<?php trackback_url(true); ?>" rel="trackback">trackback</a>
<?php } elseif (!('open' == $post-> comment_status) && ('open' == $post->ping_status)) {
// Sono aperti solo i Ping ?>
I commenti sono disabilitati, ma puoi fare un <a href="<?php trackback_url(true); ?> ">trackback</a> dal tuo sito.
<?php } elseif (('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
// I commenti sono aperti, ma non i Ping ?>
Puoi inviare un commento, ma non puoi effettuare trackback.
<?php } elseif (!('open' == $post-> comment_status) && !('open' == $post->ping_status)) {
// Commenti e Ping sono chiusi ?>
Non puoi né inviare commenti, né inviare trackback.
<?php } ?>
</p>
</div>
<?php comments_template(); ?>
<?php endwhile;
consigli?
-
20 Febbraio 2006 alle 1:05 #37058SteveAglAmministratore del forum
mi sa che l’inclusione di
<?php comments_template(); ?>
funziona solo insingle.php
in effetti questa pagina che hai creato, pur con la query modificata egregiamente, è in finale simile a
index.php
o aarchive.php
e credo che l’architettura di WP mostri i commenti solo insingle.php
-
20 Febbraio 2006 alle 20:11 #37095AndreaPaiolaPartecipante
Quindi come faccio?
Come richiamo i commenti relativi al primo post della categoria?
-
20 Febbraio 2006 alle 20:21 #37096SteveAglAmministratore del forum
facile: ti scrivi un paio di righe php con le quali sfruttando l’ID dell’articolo (
$post->ID
) ti vai a prendere i relativi commenti -
20 Febbraio 2006 alle 22:10 #37097AndreaPaiolaPartecipante
Ma si possono avere informazioni più dettagliate sul comments_template() ?
Perchè funziona solo su single.php ?
Perchè io ho guardato in giro ma non ho trovato molto…
il PHP lo faccio con un ciclo for? Non conosco bene cosa faccia $post->ID …
-
20 Febbraio 2006 alle 22:36 #37098SteveAglAmministratore del forum
Ma si possono avere informazioni più dettagliate sul comments_template() ?
comments_template()
è una funzione che dato un certo ID di un articolo, ne prende i commenti e include il filecomments.php
nella pagina e li visualizza. A livello di file di funzioni di sistema, viene definita inwp-includes/comments-functions.php
e viene eseguita solo quando viene richiamata la pagina di templatesingle.php
, quindi l’articolo singolo.il PHP lo faccio con un ciclo for? Non conosco bene cosa faccia $post->ID …
$post->ID
è l’id numerico dell’articolo, che è unico per ogni post, i commenti sono relazionati al post in base all’ID del post.Quindi conoscendo l’ID del post, puoi effettuare una query alla tabella wp_comments, prendendoti i commenti relativi a quel post.
Ispirandoti alla funzione sopra indicata, puoi fartene una più semplice che ti mostra i commenti in
category.php
. -
20 Febbraio 2006 alle 22:36 #37099AndreaPaiolaPartecipante
aspetta forse ho trovato già tutto scritto
http://www.wpitaly.it/wiki/Main/DissezioneTemaWP45
posso usare un pezzo di quel codice lଠo son completamente fuori strada?
-
20 Febbraio 2006 alle 22:41 #37100SteveAglAmministratore del forum
no, se usi quel codice in
category.php
non funzionerà perché la query per estrarre i commenti dal database non viene effettuata.Viene effettuata solo se
is_page()
oppureis_single()
sono vere. -
20 Febbraio 2006 alle 22:47 #37101AndreaPaiolaPartecipante
Ok grazie ora è più chiaro il tutto… secondo te il codice PHP è meglio se lo scrivo dentro o fuori il ciclo while?
Anzi… funziona se lo scrivo fuori dal ciclo? Mò provo…
-
20 Febbraio 2006 alle 22:49 #37102AndreaPaiolaPartecipante
Mmmm… come recupero l’id del post?
-
20 Febbraio 2006 alle 22:53 #37103SteveAglAmministratore del forum
ma allora sei de coccio l’id del post ce l’hai all’interno del
while
, nella variabile$post->ID
quindi il codice devi scriverlo dentro il
while
. -
20 Febbraio 2006 alle 22:54 #37104AndreaPaiolaPartecipante
trovato: the_ID()
-
20 Febbraio 2006 alle 22:55 #37105AndreaPaiolaPartecipante
si si son de coccio
perdonami: non conosco bene WP
grazie dell’aiuto
-
20 Febbraio 2006 alle 22:57 #37106SteveAglAmministratore del forum
Bravo. se
the_ID()
non funziona, usa$post->ID
, fondamentalmente sono uguali, però non so se il primo stampa solo il valore oppure lo restituisce in modo che possa essere usato in una query. -
20 Febbraio 2006 alle 23:16 #37107AndreaPaiolaPartecipante
come recupero i commenti? non conosco la struttura del db di WP… mmm mo ci do un’occhiata…
-
20 Febbraio 2006 alle 23:26 #37108SteveAglAmministratore del forum
ne ho fatto uno Snippet:
-
20 Febbraio 2006 alle 23:28 #37109AndreaPaiolaPartecipante
wow grande! mò lo provo! grazie!
-
20 Febbraio 2006 alle 23:34 #37110AndreaPaiolaPartecipante
Nello snippet c’è un errore: hai dimenticato di chiudere la graffa alla fine.
E poi non mi converte in link gli url inseriti cosଠal volo tipo http://www.wpitaly.it/forum/topic.php?id=1083
per intenderci…
ah anche le faccine e tutto il resto non viene convertito
-
20 Febbraio 2006 alle 23:48 #37111SteveAglAmministratore del forum
Grazie per la segnalazione dell’errore.
Cmq con questo hack ci sono alcune limitazioni che do’ come compito a casa per chi fosse interessato a migliorare la funzione, anche sfruttando funzioni di sistema di WP:
1) trovare il modo di formattare la data in italiano
2) visualizzare gli eventuali smilies presenti nei commenti convertendo i segni in faccine
3) se l’autore del commento ha inserito l’URL al suo sito, il nome deve essere cliccabile
4) formattazione del testo: p. es. tag
<p>
all’inizio e alla fine del testo, conversione degli URL…piccolo aiuto: dare un’occhiata a
wp-includes/default-filters.php
-
20 Febbraio 2006 alle 23:57 #37112AndreaPaiolaPartecipante
1) a me la data proprio non la fa vedere
2) basta rintracciare dove e come lo fa il tema di default (perchè suppongo lo faccia il tema)
3) ho capito cosa intendi… bè ho visto che c’è il campo comment_author_url
4) anche qui basta vedere come fa il tema di default…no?
ai filtri non ci avevo pensato (fagiano)
-
21 Febbraio 2006 alle 0:11 #37113AndreaPaiolaPartecipante
Ok mi dispiace di averti fatto sprecare tempo: ho trovato il modo d usare <?php comments_template(); ?> anche in altre parti… basta settare a vero $withcomments cosà¬:
<?php $withcomments = true;
comments_template();?>
e va che è un piacere
-
21 Febbraio 2006 alle 0:16 #37114SteveAglAmministratore del forum
no nessun problema, sei stato bravo a trovare la soluzione.
non ci avevo riflettuto su quel
$withcomments = true;
evidentemente oggi avevo voglia di scrivere qualche riga inutile di phpocchio però: questo va bene se hai un solo post, ma non so se con più post poi cosa succede….
-
21 Febbraio 2006 alle 0:42 #37115AndreaPaiolaPartecipante
Non è che che ci volesse molto.
Grazie a te ho letto il file comment-functions.php che ad un certo punto recita:
if ( is_single() || is_page() || $withcomments ) :
che è appunto il punto in cui controlla se è una pagina singola, una pagina PAGINA oppure se la variabile ha valore “vero”… tutto là¬.
Mi sembra che quella variabile sia stata creata apposta come scorciatoia per risolvere questo problema… son proprio bravi questi qua che han scritto wordpress va
Adesso ti pongo un’altra domanda… in uno dei commenti ho un link con un testo lungo che quindi esce dal div.
Ho trovato una soluzione tramite js http://blog.html.it/archivi/2006/01/26/tagliare-i-link-con-testo-troppo-lungo.php
che devo ancora capire perchè non mi funziona.
Volevo sapere se WordPress aveva un meccanismo lato server per accorciare i testi dei link… chessò magari i filtri…
ah come faccio a caricare in tutte le pagine (nella head) un javascript?
Basta inserire il link relativo nella head oppure assoluto oppure…?
-
21 Febbraio 2006 alle 11:43 #37119SteveAglAmministratore del forum
per i javascript metti un link assoluto in
header.php
-
-
AutorePost
- Devi essere connesso per rispondere a questo topic.