FINAL EDIT: I've summarized and simplified this crazy question into a new question, so we can close this Q or whatever is necessary to mark it resolved. Thanks again!
NEW:
Bana bu senin görüşünü söyle, ve bunu yeniden eğer belki görebilirsiniz:
Şu anda, $ post-> post_content değişken içerir:
"before <img src="/path/to/valid_img.gif" /> after"
Bu kod tema header.php üstüne yerleştirilen ...
------ Code --------
1: $str = $post->post_content;
2: assert( isset( $str ) );
3: assert( is_string( $str ) );
4: echo $str;
5: $str = 'before <img src="/path/to/nonexistant.gif" /> after';
6: assert( isset( $str ) );
7: echo $str;
--------------------
Çıkışlar bu ...
------ Output ------
before <img src="/path/to/valid_img.gif" /> after
before <img src="/path/to/nonexistant.gif" /> after
--------------------
Bu uyarılar ...
--- PHP Warnings ---
PHP Warning: assert() [<a href='function.assert'>function.assert</a>]: Assertion
failed in /path/to/header.php on line 2
PHP Warning: assert() [<a href='function.assert'>function.assert</a>]: Assertion
failed in /path/to/header.php on line 3
--------------------
Neden% 100 başarılı gerektiğini BİLİYOR zaman assert () iki kez başarısız olursa 4. düzgün $ str yankı çizgi olur?
Kırık bir görüntü src değişkeni $ str kurma veya unsetting ile yapmak ne var? WordPress bug / gariplik?
Now the crazy part...
Çizgiler 5-7 böylece nonexistant.gif ortadan kaldırarak, dışarı yorumladı zaman, assert () uyarısı görünmüyor ve çıkış HALA doğru bu üretir ...
------ Output ------
before <img src="/path/to/valid_img.gif" /> after
--------------------
Herhangi bir şans bu yeniden ve ne düşündüğünüzü bana söyleyebilir? Ben PHP için yeni değilim, ama bu çılgınlık eminim. :)
OLD:
Ben PHP nispeten yeni ve ben bu kodu vardır:
$str = $post->post_content; // hi -- [hw] -- bye <img src="foobar.png" />
$str = core_wp( 'foo_shortcode', $str );
echo $str; // return $str; produces the same warning message
// If there is no echo or return, the warning message is not produced.
// The warning disappears when I statically set (as object) the initial $str to
// "hi -- [hw] -- bye <img src="foobar.png" />".
Ben Yukarıdaki kodu çalıştırdığınızda, bu (foo-kusur bu kadar iş yapıyor) çalışıyor. Çıktısı:
hi -- Hello World -- bye <img src="foobar.png" />
Ancak ben her zaman foo-kusur etrafında ikinci kez hariç, kendisini ikinci kez çalıştırmak için çalışıyor gibi görünüyor bana, bu uyarı mesajı almak, $ str yok.
Ve yakalamak ... $ str var olmayan src işaret eden bir HTML img etiketi içerdiğinde Ben sadece bu uyarı mesajı almak.
PHP Warning: Missing argument 1 for foo_shortcode() in ...
Ve burada çekirdek-wp () ve foo-kusur olduğunu ():
function core_wp( $function, $a = NULL, $b = NULL )
{
$wrap = array
(
'foo_shortcode' => 'foo_shortcode',
);
$args = array();
if ( isset( $a ) ) $args[] = $a;
if ( isset( $b ) ) $args[] = $b;
return call_user_func_array( $wrap[ $function ], $args );
}
function foo_shortcode( $content ) {
return str_replace( '[hw]', 'Hello World', $content );
}
Birincisi, neden sonra kod çalışma ince ve aynı anda kendini ikinci kez çalıştırmak için denemek gibi görünüyor?
Ve geçersiz img içeren $ str ilgili, ben bu WordPress $ post-> post_content üretir yolu ile ilgisi vardır sanıyorum.
EDIT 1 (EvlendiİSTANBUL 22 Temmuz 08:55 @)
Ben bu gibi talimatlara göre hata günlüğü () eklendi:
error_log( 'done1' );
$str = $post->post_content;
error_log( 'done2' );
$str = core_wp( 'foo_shortcode', $str );
error_log( 'done3' );
... Ve bu benim hata günlüğünde bu üretilen:
[22-Jul-2009 08:52:49] done1
[22-Jul-2009 08:52:49] done2
[22-Jul-2009 08:52:49] PHP Warning: Missing argument 1 for foo_shortcode() in
/home/path/to/header.php on line 23
[22-Jul-2009 08:52:49] done3
... Ve (doğru) tarayıcıya gönderilen çıkış oldu:
hi -- Hello World -- bye <img src="foobar.png" />
... Ama uyarı mesajı hala üretildi.
EDIT 2 (EvlendiİSTANBUL 22 Temmuz 09:18 @)
Ben o zaman bu iddiayı çalıştı:
59: $str = $post->post_content;
60: assert( isset( $str ) );
61: $str = core_wp( 'foo_shortcode', $str );
62: assert( isset( $str ) );
... Ve PHP Kayıtta:
[22-Jul-2009 09:16:55] PHP Warning: assert() [<a
href='function.assert'>function.assert</a>]: Assertion failed in
/home/path/to/header.php on line 60
[22-Jul-2009 09:16:55] PHP Warning: Missing argument 1 for foo_shortcode() in
/home/path/to/header.php on line 23
... Ama yine çıktı doğru, henüz uyarı hala verilir.
PHP başlangıçta ayar değil gibi geliyor bana $ str = $ post-> post-içerik, o çekirdek-wp ('foo-kusur', $ str) çalışır ve oh! Ben gerçekten $ ayarlamanız gerekir "kendisi diyor str = $ post-> post-içerik ... "geri gider ve bu ayarlar ve sonra doğru verileri verir.