1

「ループ」内またはecho get_permalink()正常に動作し、これらの呼び出しを HTML の引用符内に配置するまで、次のthe_permalink()ようなものを生成します。http://www.example.com/path-to-post

<p>
  This is normal HTML!
  "<?php the_permalink()?>"
</p>

その時点で、「/path-to-post」のように魔法のようにサイトの相対 URL になります。

引用符と php の間にスペースを入れることでこの問題を回避できることがわかりました。これはリンクなどではうまく機能しますが、ここで何が起こっているのでしょうか? PHP が php ブロックの外側のコンテンツを読み取ってそれに反応できるようになったのはいつですか? とにかく、なぜこれが起こるのでしょうか?

4

2 に答える 2

2

Q: PHP が php ブロックの外側のコンテンツを読み取ってそれに反応できるようになったのはいつですか?

A: 非常に長い間 (PHP 4 を考えてください)、出力されたテキストをバッファーに取り込み、そのバッファーを文字列のように読み取ることができました。ob_start()を参照してください。技術的には、関数はバッファーの最後の文字が a であるかどうかを確認し"、その状況では異なる動作をすることができます。

Q: とにかく、なぜこのようなことが起こるのでしょうか?

A: これは本当にthe_permalink()関数で起こっていますか? <a href="<?php the_permalink() ?>">絶対 URL がコンテキストで使用されないようにしようとするプラグインが存在する可能性があります。どのプラグインをインストールしていますか? おそらくそれはデフォルトの動作でありthe_permalink()、wp-includes/link-template.php のクイック スキャンでは表示されません。

それを回避するために、他のいくつかの方法を試すことができます。私が最初に試みることは&quot;、リテラルの代わりに使用すること"です。

于 2013-08-30T03:42:15.873 に答える
0

まあ、私はばかです。ページを再フォーマットする「絶対相対リンク」と呼ばれるプラグインがありました。それでも、それが動作する方法は奇妙です。引用符の直後に URL に似たものが続くものを探し、それを再フォーマットするようです。しかし、1 つのスペースでもそれを止めるには十分です。そして、PHP がそれ自体の外部にあるページの情報を読み取ることができるとは知りませんでした。学んだ教訓。

于 2013-08-30T21:56:54.387 に答える