Подтвердить что ты не робот

Многострочная строка PHP с PHP

Мне нужно повторить много PHP и HTML.

Я уже пробовал очевидное, но он не работает:

<?php echo '
<?php if ( has_post_thumbnail() ) {   ?>
      <div class="gridly-image"><a href="<?php the_permalink() ?>"><?php the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false) ));?></a>
      </div>
      <?php }  ?>

      <div class="date">
      <span class="day">
        <?php the_time('d') ?></span>
      <div class="holder">
        <span class="month">
          <?php the_time('M') ?></span>
        <span class="year">
          <?php the_time('Y') ?></span>
      </div>
    </div>
    <?php }  ?>';
?>

Как я могу это сделать?

4b9b3361

Ответ 1

Вам не нужно выводить теги php:

<?php 
    if ( has_post_thumbnail() ) 
    {
        echo '<div class="gridly-image"><a href="'. the_permalink() .'">'. the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false) )) .'</a></div>';
    }

    echo '<div class="date">
              <span class="day">'. the_time('d') .'</span>
              <div class="holder">
                <span class="month">'. the_time('M') .'</span>
                <span class="year">'. the_time('Y') .'</span>
              </div>
          </div>';
?>

Ответ 2

Вы не можете запустить PHP-код внутри такой строки. Это просто не работает. Кроме того, когда вы "выходите" из PHP-кода (?>), любой текст вне блоков PHP считается в любом случае, поэтому нет необходимости в инструкции echo.

Если вам нужно сделать многострочный вывод с помощью фрагмента кода PHP, рассмотрите возможность использования HEREDOC:

<?php

$var = 'Howdy';

echo <<<EOL
This is output
And this is a new line
blah blah blah and this following $var will actually say Howdy as well

and now the output ends
EOL;

Ответ 3

Использовать Heredocs для вывода строк с несколькими линиями, содержащих переменные. Синтаксис...

$string = <<<HEREDOC
   string stuff here
HEREDOC;

Часть "HEREDOC" похожа на кавычки и может быть любым, что вы хотите. Конечный тег должен быть единственным на нем, то есть без пробелов до или после, и должен заканчиваться двоеточием. Для получения дополнительной информации ознакомьтесь с руководством.

Ответ 4

Чтобы сделать это, вы должны удалить все ' charachters в своей строке или использовать escape-символ. Как:

<?php
    echo '<?php
              echo \'hello world\';
          ?>';
?>

Ответ 5

Внутренний набор одинарных кавычек в вашем коде убивает строку. Всякий раз, когда вы нажимаете одну цитату, она заканчивает строку и продолжает обработку. Вам нужно что-то вроде:

$thisstring = 'this string is long \' in needs escaped single quotes or nothing will run';

Ответ 6

Используйте функцию show_source(); для PHP. Подробнее читайте в show_source. Это лучший метод, я думаю.

Ответ 7

Другой вариант - использовать if с двоеточием и endif вместо скобок:

<?php if ( has_post_thumbnail() ): ?>
    <div class="gridly-image">
        <a href="<?php the_permalink(); ?>">
        <?php the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false) )); ?>
        </a>
    </div>
<?php endif; ?>

<div class="date">
    <span class="day"><?php the_time('d'); ?></span>
    <div class="holder">
        <span class="month"><?php the_time('M'); ?></span>
        <span class="year"><?php the_time('Y'); ?></span>
    </div>
</div>