@dsbk

Как «пакетно» создать шорткоды?

Нужно создать большое количество шорткодов по одинаковому принципу.
Названия шорткодов [shortcode_first] и выводимый ими текст (т.е. "shortcode_first text") содержатся в массиве $arr.

У меня получилось это сделать, только создав несколько функций create_shortcode_1() - и т.д.
Но они, по сути, дублируются - в них меняются только значения, которые берутся из массива.

Пожалуйста, подскажите, как это дело можно оптимизировать - не писать кучу дублей create_shortcode_1(), и add_shortcode(...) а, допустим, как-то циклом повторять эту функцию, подставляя в зависимости от шага нужные значения из массива... Сам в PHP не шарю, не могу сообразить.

<?php

$arr = [
	['shortcode_first', 'shortcode_first text'],
	['shortcode_second', 'shortcode_second text'],
	['shortcode_third', 'shortcode_third text']
];

function create_shortcode_1(){
	global $arr;
	echo 'Это шорткод ['.$arr[0][0].'], который выведет "'.$arr[0][1].'"<br />';
}
add_shortcode($arr[0][0], 'create_shortcode_1' );

function create_shortcode_2(){
	global $arr;
	echo 'Это шорткод ['.$arr[1][0].'], который выведет "'.$arr[1][1].'"<br />';
}
add_shortcode($arr[1][0], 'create_shortcode_2' );

function create_shortcode_3(){
	global $arr;
	echo 'Это шорткод ['.$arr[2][0].'], который выведет "'.$arr[2][1].'"<br />';
}
add_shortcode($arr[2][0], 'create_shortcode_3' );

?>


Созданные шорткоды:

[shortcode_first]
[shortcode_second]
[shortcode_third]
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
Kozack
@Kozack Куратор тега WordPress
Thinking about a11y
  1. Создаёте массив исходных параметров.
  2. Перебираете массив
  3. В цикле регистрируете шорткод
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Vitsliputsli
Я не знаю Wordpress, но знаю что shortcode в нем - это по-сути функция во view. У вас эта функция делает одно и то же, выводит некоторый текст, который был запрошен, на основе предопределенного массива. Так зачем несколько шоткодов? Вам достаточно одного, параметром в него передаете ключ текста который нужно отобразить и все.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы