Как передать параметры В шорткод?

12 июн. 2017 г., 13:26:17
Просмотры: 15.8K
Голосов: 2

Я видел статьи о том, как добавлять параметры в шорткоды, чтобы можно было использовать что-то вроде [my-shortcode post_id=7], чтобы передать ID записи в шорткод.

Допустим, у меня есть форма на странице, и пользователь вводит что-то или выбирает что-то, и на основе этого я хочу обновить контент, представленный шорткодом, используя параметры, предоставленные пользователем.

Как этого добиться?

0
Все ответы на вопрос 2
1

Допустим, у вас есть форма, которая отправляет данные следующим образом:

<form method="post" name="car-select" action="<?php echo site_url('/my-page/'); ?>">
    <select name="make">
        <option value="benz">Mercedes-Benz</option>
        <option value="bmw">BMW</option>
        <option value="audi">Audi</option>
    </select>
    <input type="submit" value="Найти машину мечты!"/>
</form>

Теперь вы хотите выполнить запрос к записям на основе выбора пользователя, верно? Вот где пригодится $_POST:

add_shortcode('my-shortcode','my_shortcode_function');
function my_shortcode_function($atts){
    // Получаем ID из шорткода
    $id = $atts['post_id'];
    // Проверяем, были ли отправлены данные формы
    if (isset($_POST['make']) && $id){
        $car_manufacturer = $_POST['make'];
        // Теперь у вас есть данные формы. Делайте с ними что угодно
        return $my_shortcode_values;
    }
}

Вам нужно расширить этот код в соответствии с вашими потребностями, например, определить, что делать, если данные формы не были отправлены.

12 июн. 2017 г. 14:41:12
Комментарии

Я вижу, что это отвечает на мой вопрос, но мне не нужно передавать параметр в шорткод, функция просто должна получить POST-данные и что-то с ними сделать.

Russell Eubanks Russell Eubanks
13 июн. 2017 г. 18:57:07
0

Стоит отметить, что если вы используете $_GET вместо этого. Значение останется даже если пользователь обновит страницу (F5).

if (isset($_GET ['make']) && $id){  
        $car_manufacturer = $_GET ['make'];  
        // Теперь у вас есть данные формы. Делайте с ними что угодно  
        return $my_shortcode_values;  
    }  
13 июн. 2023 г. 10:25:08