Я хочу отображать все страницы в Wordpress в коротком коде. Мой код выглядит следующим образом:Wordpress: Показать все страницы
function createTilesFromSites() {
$args = array(
'sort_order' => 'ASC',
'sort_column' => 'post_title',
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'meta_key' => '',
'meta_value' => '',
'authors' => '',
'child_of' => 0,
'parent' => -1,
'exclude_tree' => '',
'number' => '',
'offset' => 0,
'post_type' => 'page',
'post_status' => 'publish'
);
$pages = get_pages($args);
foreach ($pages as $page_data) {
$content = apply_filters('the_content', $page_data->post_content);
$title = $page_data->post_title;
$slug = $page_data->post_name;
echo "$title <br />";
}
}
add_shortcode('createTiles', 'createTilesFromSites');
Теперь он показывает мне страницы (мои страницы называются "1", "2", "3", "4" и "блог"). Поэтому он должен дать мне что-то вроде: «1234Blog». Это печатает меня это, но не только один раз. Он делает это 2658 ВРЕМЕНИ (по крайней мере, хром говорит об этом с cmd + f, во всяком случае, он очень длинный). Поэтому мой вывод выглядит следующим образом: «1234Blog1234Blog1234Blog1234Blog1234Blog1234Blog1234Blog1234Blog1234Blog1234Blog», например.
Что-то не в порядке с кодом? Возможно, это проблема с моей установкой Wordpress?
Спасибо за помощь.
Важно возвращать, а не эхо, выход короткого кода. Объявите '$ output = '';' в начале вашей функции, соедините элементы во время цикла, например. '$ output. = $ title;' и, наконец, вернуть результат: 'return $ output;' – diggy
Спасибо за отзыв, я на самом деле довольно новичок в php и wordpress:/Но это не решает мою проблему! –