Ne bu PHP echo ile oluyor ve nasıl giderebilirim?

7 Cevap php

I am trying to add some logic to a wordpress template. I want to build a simple if conditional which will check if a variable equals 26. The variable "$value" must contain some extra hidden characters, because when I echo the content... 26 appears before the echo string values that should appear first. Therefore, the if-condition does not work either. What is happening here and how can i fix it?

KOD:

$value=the_ID();   // a wordpress function which contains the id of the current page/post.
echo "value=(" . $value . ")";

ÇIKIŞ:

26value=()

7 Cevap

The_ID () bir şablon işlevi olmasıdır: sadece kimliği dışarı, echo; bunu dönmez. Bunun yerine get_the_ID () kullanarak istiyorum.

the_ID() bir değer döndürüyor değil, onu dışarı baskı oluyor. Eğer bu değişken atamak olamaz neden budur.

(O işlevi kullandığınız app diğer parçalarını kırmak olsa da) bu değer döndürür var. Eğer fonksiyonunu düzenleyebilirsiniz eğer Ya da bu gibi yakalamak:

ob_start();
the_ID();
$value = ob_get_clean();
echo "value=(" . $value . ")";

Eğer yankı açıklama ne olur? 26 hala görünüyor mu? Eğer öyleyse o işlevi yerine bunu dönen echo gelmez.

var_dump hata ayıklama için değişkenin içeriğini yazdırmak için kullanın:

var_dump( $value );

the_ID() kimliğini kendisi yankıları gibi görünüyor.

Bunu yapabileceğini ya:

echo "value=(".the_ID().")";

ya da komut daha sonra kullanmak üzere bir değer atamak istiyorsanız, bu:

$value=get_the_ID();
echo "value=($value)";

Eğer bu benzer işe yarayabilir, böylece komut bir if kullanmak istiyorum demek -

if(get_the_ID()==26){/*do whatever*/}

Bunu daha önce atanmış varsa da elbette == 26 $ değerini kullanabilirsiniz.

Birçok kişi the_ID() yankılanan yapmak öneririz. Burada yapabileceğiniz birkaç şey vardır.

WordPress (ben şahsen bilmiyorum) yerine onu baskı kimliğini dönmek için bir işlevi vardır İlk olarak, bkz.

İkinci olarak, sadece bu gibi ... sizin gibi yazdırmak izin kodu yeniden düzenlemek olabilir

echo "value=(" . the_ID() . ")";

VEYA

echo "value=("; the_ID(); echo ")";

Eğer gerçekten bir değişkene sahip olmak istiyorsanız Üçüncü olarak, size yankı çıkış yakalayabilir. Böyle

ob_start();
the_ID();
$Value = ob_get_contents();
ob_end_clean();
echo $Value;

Umarım bu yardımcı olur.

Ben sayısı 26 yankıları aradığınız işlevi bahis ..

bu yüzden .. değer aslında boş = olacak ..

böylece the_ID () muhtemelen böyle bir fonksiyonudur:

function the_ID(){
    $id = 26;
    echo $id;
}

yani: o sonucu yankıları, hiçbir şey geri dönmez. (Eğer traul teh wordpress kaynak koduna göz muhtemelen ... tam olarak neler olduğunu fuind ve the_ID () actulaly dan ethe sayfa id oluyor nerede bulabiliriz eğer.

Ben wordpress talimatları hızlı bir arama yaptım:

Note: This function displays the ID of the post, to return the ID use get_the_ID(). Usage

<?php the_ID(); ?>

böylece yanlış işlevini kullanıyorsanız

get_the_ID kullanmayın () değil the_ID ()

the_ID(); //prints teh page id
$value=get_the_ID(); //returns the page_id

http://codex.wordpress.org/Template_Tags/the_ID