2017-02-14 22 views
0

Это моя первая попытка на php. Попытка создать собственный код в Wordpress для вызова пользовательских метаданных и поместить его в содержимое страницы. Он работал отлично безВыход функции не появляется в div

function wpsl_staff() { 
echo '<div class="staff">' .wpsl_get_staff(). '</div>'; 
function wpsl_get_staff() { 

и с шорткодом будучи

add_shortcode('wpsl_staff', 'wpsl_get_staff'); 

Выход был правильным, но выход оказался в верхней части страницы, прежде всего другого содержания, и когда я осмотрел в браузере он не имел идентификатора div или класса и просто появился как текст. Как обернуть это в div и дать идентификатор, чтобы он правильно сидел на странице контента (он должен отображаться между двумя изображениями и под другим коротким кодом). Мне удалось присвоить ему идентификатор класса ранее и заставить его отображаться в div, но выход по-прежнему отображается в верхней части страницы над изображениями и другим коротким кодом.

<?php 
function wpsl_get_staff() { 
global $post; 
$queried_object = get_queried_object();{ 

$Manager = get_post_meta($queried_object->ID, 'wpsl_Manager', true); 
if (!empty($Manager)) return 'Manager : ' .$Manager . "<br>"; 
     else {} 

$Assitant = get_post_meta($queried_object->ID, 'wpsl_Assistant_Manager', true); 
if (!empty($Assistant)) return 'Assistant Manager : ' .$assistant . "<br>"; 
     else {} 

$Agent = get_post_meta($queried_object->ID, 'wpsl_Agent', true); 
if (!empty($Agent)) return 'Agent : ' .$Agent . "<br>"; 
     else {} 
} 
} 

function wpsl_staff() { 
echo '<div class="staff">' .wpsl_get_staff(). '</div>'; 

} 
add_shortcode('wpsl_staff', 'wpsl_dio_staff'); 

Благодаря

  • Toca

ответ

0

функции Сокращенный должны вернуться результатом, а не напрямую выводить его.

function wpsl_staff() { 
    return '<div class="staff">' .wpsl_get_staff(). '</div>'; 
} 

Edit: Вы можете вернуть только одно значение из функции - так что если ваш wpsl_get_staff должен возвращать данные для всех трех типов, то вам нужно собрать эти данные в строковую переменную первого и затем вернуться, что в конце функции - что-то вроде этого:

function wpsl_get_staff() { 
    global $post; 
    $queried_object = get_queried_object(); 
    $output = ''; 

    $Manager = get_post_meta($queried_object->ID, 'wpsl_Manager', true); 
    if (!empty($Manager)) { 
    $output .= 'Manager : ' .$Manager . "<br>"; 
    } 

    $Assitant = get_post_meta($queried_object->ID, 'wpsl_Assistant_Manager', true); 
    if (!empty($Assistant)) { 
    $output .= 'Assistant Manager : ' .$assistant . "<br>"; 
    } 

    $Agent = get_post_meta($queried_object->ID, 'wpsl_Agent', true); 
    if (!empty($Agent)) { 
    $output .= 'Agent : ' .$Agent . "<br>"; 
    } 

    return $output; 
} 
+0

Я понимаю, что, но когда я использую возвращение нет никакого вывода на странице, тогда как эхо показывает правильный вывод (хотя на выходе не появится в правильное место) –

+0

_ "тогда как эхо показывает коррекцию t (хотя выход не отображается в нужном месте) «_ - да, _because_ вы используете эхо, оно отображается не в том месте. Этот код запускается до того, как содержимое будет собрано, и поэтому использование эха «время» просто неверно. Если вы не получаете какой-либо результат с возвратом, то что-то еще должно быть неправильным. Запустите отладку, проверив созданный вывод HTML. – CBroe

+0

Извините, пожалуйста, уточните. С использованием возврата, как вы показали мне, вывод менеджера отображается правильно на странице, а остальные 2 вообще не отображаются. –

 Смежные вопросы

  • Нет связанных вопросов^_^