多くの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 } ?>';
?>
どうすればいいですか?
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>';
?>
そのような文字列内でPHPコードを実行することはできません。それは動作しません。同様に、PHP code( ?>
)、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;
Heredocsを使用して、変数を含むマルチライン文字列を出力します。構文は...
$string = <<<HEREDOC
string stuff here
HEREDOC;
「HEREDOC」の部分は引用符のようなもので、必要なものであれば何でもかまいません。終了タグは、その行の唯一のものでなければなりません。つまり、前後に空白はなく、コロンで終了する必要があります。詳しくは マニュアルをご覧ください 。
別のオプションは、角括弧の代わりにコロンと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>
PHPのshow_source();
関数を使用します。 show_sourceで詳細を確認してください。これは私が推測するより良い方法です。
コード内の単一引用符の内部セットが文字列を殺しています。一重引用符を押すと、文字列が終了して処理が続行されます。次のようなものが必要です。
$thisstring = 'this string is long \' in needs escaped single quotes or nothing will run';
そのためには、文字列内のすべての'
文字を削除するか、エスケープ文字を使用する必要があります。のような:
<?php
echo '<?php
echo \'hello world\';
?>';
?>