Perché questo non avrà eco in PHP?
Domanda
Sono curioso di sapere perché questo non farà eco all'HTML;Ho esaminato le altre domande in SO che hanno a che fare con l'eco e la stampa.
Deve essere il ciclo while PHP nella stringa, ma ho evitato le virgolette doppie.Sta succedendo qualcosa di più complesso, vale a dire l'errore "L'oggetto della classe WP-Query non può essere convertito in stringa."
Sono troppo semplicistico nel cercare di riecheggiare il PHP?
Modificato per alcune formattazioni (che all'inizio non volevano funzionare).
E quello che devo fare è riprodurre l'HTML generato dal ciclo di query, perché quello è il collegamento al post di WordPress.
<?php $d=date("D"); if (in_array($d, array('Thu','Fri','Sat','Sun')))
echo "The latest post for Thursday, Friday, Saturday, Sunday:
<?php $my_query = new WP_Query('category_name=posts&showposts=1'); ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<a href=\"<?php the_permalink() ?>\" rel=\"bookmark\"><?php the_title(); ?></a>.
<?php endwhile; ?>" ;?>
«Grazie, Mark
Soluzione
Non è possibile utilizzare PHP come quello. Prova questo:
$d=date("D");
if (in_array($d, array('Thu','Fri','Sat','Sun'))) {
echo "The latest post for Thursday, Friday, Saturday, Sunday: ";
$my_query = new WP_Query('category_name=posts&showposts=1');
while ($my_query->have_posts()) {
$my_query->the_post();
echo "<a href=\";
the_permalink();
echo "\" rel=\"bookmark\">";
the_title();
echo "</a>";
}
}
O se si preferisce questa sintassi:
<?php
$d=date("D");
if (in_array($d, array('Thu','Fri','Sat','Sun'))):
?>
The latest post for Thursday, Friday, Saturday, Sunday:
<?php
$my_query = new WP_Query('category_name=posts&showposts=1');
while ($my_query->have_posts()):
$my_query->the_post();
?>
<a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
<?php
endwhile;
endif;
?>
Altri suggerimenti
Non si chiude la stringa - dovrebbe essere:
<?php
$d=date("D");
if (in_array($d, array('Thu','Fri','Sat','Sun')))
echo "The latest post for Thursday, Friday, Saturday, Sunday: ";
$my_query = new WP_Query('category_name=posts&showposts=1');
while ($my_query->have_posts())
{
$my_query->the_post();
?><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>.<?php
}
?>
Il tuo formattazione non è molto buona btw. A capo non sono costosi!
l'interprete php si ferma interpretazione durante ?>
e considera tutto ciò che viene in seguito come input normale. così tutti quest'ultimo codice viene analizzato nuovo e non parte dell'eco.
Apri lo script php due volte: <?php
dovrebbe essere lì solo una volta.
<?php
..."L'ultimo post di giovedì, venerdì, sabato, domenica:<?php
Perché non esce la stringa?
<?php $my_query = new WP_Query('category_name=posts&showposts=1'); ?>
Il codice di cui sopra è bloccato proprio nel bel mezzo della stringa.
Esso stampa
The latest post for Thursday, Friday, Saturday, Sunday: <?php = new WP_Query('category_name=posts&showposts=1'); ?><?php while (()) : (); ?><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>. <?php endwhile; ?>
che è quello che dovrebbe. PHP analizza in un solo passaggio.
<?php
$d=date("D");
if(in_array($d, array('Thu','Fri','Sat','Sun')))
echo 'The latest post for Thursday, Friday, Saturday, Sunday:'.
' <?php $my_query = new WP_Query(\'category_name=posts&showposts=1\'); ?'.
'><?php while ($my_query->have_posts()) : $my_query->the_post(); ?'.
'><a href="<?php the_permalink() ?'.
'>" rel="bookmark"><?php the_title(); ?'.
'></a>. <?php endwhile; ?'.'>';
?>