Что происходит с этим эхо PHP и как мне его решить? - PullRequest
0 голосов
/ 01 февраля 2010

Я пытаюсь добавить логику в шаблон WordPress. Я хочу построить простое условное условие, которое будет проверять, равна ли переменная 26. Переменная «$ value» должна содержать некоторые дополнительные скрытые символы, потому что, когда я эхо, содержимое ... 26 появляется перед значениями строки эха, которые должны появиться первыми. Следовательно, условие if тоже не работает. Что здесь происходит и как я могу это исправить?

КОД:

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

ВЫВОД:

26value=()

Ответы [ 7 ]

7 голосов
/ 01 февраля 2010

Это потому, что the_ID () является функцией шаблона: она только выводит ID; это не возвращает это. Вместо этого вы хотите использовать get_the_ID ().

2 голосов
/ 01 февраля 2010

Что происходит, когда вы комментируете эхо? 26 все еще появляется? Если так, то функция выводит его вместо того, чтобы возвращать.

Используйте var_dump, чтобы распечатать содержимое переменной для отладки:

var_dump( $value );
2 голосов
/ 01 февраля 2010

the_ID() не возвращает значение, оно печатает его. Вот почему вы не можете присвоить его этой переменной.

Если вы можете редактировать функцию, она должна вернуть значение (хотя это может нарушить другие части приложения, использующие эту функцию). Или запишите это так:

ob_start();
the_ID();
$value = ob_get_clean();
echo "value=(" . $value . ")";
1 голос
/ 01 февраля 2010

Столько людей предполагают, что the_ID() делает эхо. Здесь можно сделать несколько вещей.

Во-первых, посмотрите, есть ли в WordPress функция возврата идентификатора вместо его печати (лично я не знаю).

Во-вторых, вы можете просто изменить код, чтобы он печатался так, как вам нравится ... вот так

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

OR

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

В-третьих, если вы действительно хотите, чтобы оно было в переменной, вы можете захватить вывод эха. Как это

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

Надеюсь, это поможет.

1 голос
/ 01 февраля 2010

Вы можете сделать это:

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

или если вы хотите присвоить значение для использования в вашем скрипте позже, это:

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

Вы говорите, что хотите использовать if в сценарии, чтобы это могло работать аналогично -

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

Конечно, вы также можете использовать $ value == 26, если вы присвоили его ранее.

1 голос
/ 01 февраля 2010

Похоже, the_ID() отражает сам идентификатор.

0 голосов
/ 01 февраля 2010

Бьюсь об заклад, функция, которую вы вызываете, повторяет номер 26 ..

так что .. значение будет на самом деле = ноль ..

поэтому the_ID (), вероятно, является функцией, подобной этой:

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

то есть: он ничего не возвращает, он повторяет результат. (если вы просматриваете исходный код WordPress, вы, вероятно, можете точно определить, что происходит ... и выяснить, откуда the_ID () фактически получает идентификатор страницы.

Я сделал быстрый поиск по инструкциям WordPress:

Примечание. Эта функция отображает идентификатор пост, чтобы вернуть идентификатор использования get_the_ID (). Использование

<?php the_ID(); ?>

поэтому вы используете неправильную функцию

используйте get_the_ID (), а не the_ID ()

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...