Почему это не отобразится в PHP?
Вопрос
Мне любопытно, почему это не отражает HTML;Я просмотрел другие вопросы в SO, связанные с эхом и печатью.
Это должен быть цикл PHP while в строке, но я избежал двойных кавычек.Происходит нечто более сложное, а именно ошибка «Объект класса WP-Query не может быть преобразован в строку».
Я слишком упрощаю, пытаясь повторить PHP?
Отредактировано некоторое форматирование (которое сначала не хотело работать).
И что мне нужно сделать, это отобразить HTML-код, сгенерированный циклом запроса, потому что это ссылка на сообщение 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; ?>" ;?>
«танки, Марк
Решение
Вы не можете использовать 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();
echo "<a href=\";
the_permalink();
echo "\" rel=\"bookmark\">";
the_title();
echo "</a>";
}
}
Или, если вы предпочитаете этот синтаксис:
<?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;
?>
Другие советы
Вы не закрываете свою строку - она должна быть:
<?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
}
?>
Кстати, форматирование у тебя не очень хорошее.Новые строки не дорогие!
интерпретатор php перестает интерпретировать на ?>
и считает все, что приходит позже, обычным вводом.таким образом, весь последний код анализируется снова, а не является частью эха.
Вы открываете PHP-скрипт дважды: <?php
должен быть там только один раз.
<?php
...«Последний пост за четверг, пятницу, субботу, воскресенье:<?php
Почему ты никогда не выходишь из строки?
<?php $my_query = new WP_Query('category_name=posts&showposts=1'); ?>
Приведенный выше код застрял прямо в середине вашей строки.
Он печатает
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; ?>
так и должно быть.PHP анализирует только за один проход.
<?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; ?'.'>';
?>