Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
18 / 15 / 8
Регистрация: 15.05.2013
Сообщений: 212

Данные из шорткода выводятся на верху страницы

07.02.2019, 04:37. Показов 2405. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил сделать шорткод для вывода слайдов в контенте. Но при выводе слайды отображаются в самом верху страницы, под хедером. Я нашел инфу, что это происходит из-за того, что функция должна возвращать, а не отображать параметры.

Но как мне возвратить цикл вывода слайдов? Вот сама функция:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    public function shortcodeSliderInit($name)
    {
        if (!$name) {
            return '';
        }
        
        $slider = ale_sliders_get_slider($name); 
        if (!$slider) {
            return '';
        }
        
        $slider_id = sanitize_title('ale-slider-' . $slider['slug'] . '-' . wp_generate_password(5, false));
 
        ?>
        <div id="<?php echo $slider_id ?>" class="ale-slider-slides">
            <div class="owl-carousel owl-theme">
            
                    <?php foreach ($slider['slides'] as $slide) : ?>
                        
                        
                            <?php if ($slide['image']) : ?>
                                
                                    <?php if ($slide['url']) : ?>
                                        <a href="<?php echo $slide['url'] ?>" class="swipebox">
                                    <?php endif; ?>
                                            <img src="<?php echo $slide['image']?>" alt="<?php $slide['title'] ?>" />
                                    <?php if ($slide['url']) : ?>
                                        </a>
                                    <?php endif; ?>
                            
                            
                            <?php endif; ?>
                        
                    <?php endforeach; ?>
            
            </div>
        </div>
        
        <?php
    }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2019, 04:37
Ответы с готовыми решениями:

Как убрать переход к верху страницы при клике
Привет, у меня небольшая проблема. В боковой(ом) меню есть ссылки на разделы, одна из ссылок создает выпадающее меню. Проблема в том, что...

При запуске флешки в браузере в верху страницы появляются рекламные баннеры
Добрый день! При запуске флешки в браузере в верху страницы появляются рекламные баннеры. В первом архиве отправляю логи проверки...

Как отключить прилипание шапки к верху при прокрутке страницы на мобильных устройствах?
Здравствуйте. Имеется зафиксированная к верху при прокрутке шапка. Но нужно чтобы она фиксировалась только для лаптопов и пк. А для...

3
 Аватар для HectorPrima
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
07.02.2019, 05:25
Лучший ответ Сообщение было отмечено masta как решение

Решение

Читаем про ob_start и т.д.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
$text = getShortcodeOutput();
echo "--- before text\n";
echo $text;
echo "--- after text\n";
 
function getShortcodeOutput() {
    ob_start();
    echo "some text1\n";
    echo "some text2\n";
    echo "some text3\n";
    echo "some text4\n";
    $result = ob_get_contents();
    ob_end_clean();
    return $result;
}
0
18 / 15 / 8
Регистрация: 15.05.2013
Сообщений: 212
07.02.2019, 14:37  [ТС]
Я пытался так сделать, но выскакивает ошибка:
Fatal error: Call to undefined function shortcodeSliderInit()
Хотя функцию я объявлял, вот код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
    public function shortcodeSliderInit($name)
    {
 
 
        if (!$name) {
            return '';
        }
        
        $slider = ale_sliders_get_slider($name);
        if (!$slider) {
            return '';
        }
        
        $slider_id = sanitize_title('ale-slider-' . $slider['slug'] . '-' . wp_generate_password(5, false));
 
        ?>
        <div id="<?php echo $slider_id ?>" class="ale-slider-slides">
            <div class="owl-carousel owl-theme">
            
                    <?php foreach ($slider['slides'] as $slide) : ?>
                        
                        
                            <?php if ($slide['image']) : ?>
                                
                                    <?php if ($slide['url']) : ?>
                                        <a href="<?php echo $slide['url'] ?>" class="swipebox">
                                    <?php endif; ?>
                                            <img src="<?php echo $slide['image']?>" alt="<?php $slide['title'] ?>" />
                                    <?php if ($slide['url']) : ?>
                                        </a>
                                    <?php endif; ?>
                            
                            
                            <?php endif; ?>
                        
                    <?php endforeach; ?>
            
            </div>
        </div>
        
        <?php
    }
    
    public function shortcodeSlider($name){
        ob_start();
        shortcodeSliderInit($name);
        $result = ob_get_contents();
        ob_end_clean();
        return $result;
    }
    public function generalInit() 
    {
        add_shortcode('ale-slider', array($this, 'shortcodeSlider'));
    }
Добавлено через 30 минут
Всё, решил проблему, я понял в чем косяк. Вместо того чтобы функцию в функцию вставлять, я просто добавил буферизацию в первую функцию, и всё заработало.

public function shortcodeSliderInit($atts)
{
ob_start();
extract(shortcode_atts( array(
'name' => '',
'slideshow' => 0,
'animation' => 'fade',
'controlnav'=> 0,
'randomize' => 0,
), $atts));

if (!$name) {
return '';
}

$slider = ale_sliders_get_slider($name);
if (!$slider) {

return '';
}

$slider_id = sanitize_title('ale-slider-' . $slider['slug'] . '-' . wp_generate_password(5, false));

?>
<div id="<?php echo $slider_id ?>" class="ale-slider-slides">
<div class="owl-carousel owl-theme">

<?php foreach ($slider['slides'] as $slide) : ?>


<?php if ($slide['image']) : ?>

<?php if ($slide['url']) : ?>
<a href="<?php echo $slide['url'] ?>" class="swipebox">
<?php endif; ?>
<img src="<?php echo $slide['image']?>" alt="<?php $slide['title'] ?>" />
<?php if ($slide['url']) : ?>
</a>
<?php endif; ?>


<?php endif; ?>

<?php endforeach; ?>

</div>
</div>

<?php
$result = ob_get_contents();
ob_end_clean();
return $result;
}
0
 Аватар для HectorPrima
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
07.02.2019, 15:10
$this->shortcodeSliderInit($name);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.02.2019, 15:10
Помогаю со студенческими работами здесь

Как обрабатывать событие когда курсор поднимается ближе 200 пикселей к верху страницы?
Как обрабатывать событие когда курсор поднимается ближе 200 пикселей к верху страницы? и событие когда курсор обратно опускается более чем...

Плавающий блок DIV приклеивающийся к верху экрана, но находящийся например в 150 пикселах от верха страницы
Как сделать блок DIV приклеивающийся к верху экрана, но находящийся например в 150 пикселах от верха страницы. То есть блок находится в 150...

Как вывести данные на форму из класса Reader, данные выводятся только в консоль
MainAplication.java package main; import javafx.application.Application; import javafx.fxml.FXMLLoader; import...

Не выводятся страницы в Яндексе
Добрый день. Яндекс никак не хочет выводить сайт в поиске и нормально индексировать. Бот каждый день проходит мои страницы - это видно из...

Неправильно выводятся страницы
Всем привет! Я в сайтостроении новичок. Не могу решить пробшему. Сайт написан на php, html и css. Все страницы выводтся корректно. Но если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru