Как динамически нумеровать виджеты по мере их создания на странице WordPress?

Созданный мной веб-сайт WordPress имеет страницу часто задаваемых вопросов. Каждая пара вопросов / ответов создается с использованием SiteOrigin Плагин Построителя Страниц и пользовательский виджет. Я хотел бы иметь возможность добавлять новые вопросы и переставлять их без необходимости перенумерации вручную.

Вот как это выглядит прямо сейчас:

SiteOrigin View Builder View

Я просто хотел бы, чтобы вопросы были динамически пронумерованы (1., 2., 3. и мягче, непосредственно перед вопросом).

Я могу придумать несколько способов взлома, которые могут решить эту задачу, например, злоупотребление <ol> тег или глобальная переменная. Я также мог бы использовать некоторый код для подсчета количества элементов, которые были созданы с помощью класса «question», но кажется, что это добавит ненужный код / ​​задержку к тому, что должно быть возможно с помощью простой целочисленной переменной, которая существует только при эта страница отображается.

Возможно ли в WordPress? Если так, как мне это сделать? Если нет, есть ли лучший метод, чем я упомянул?

Если это поможет, вот код рендеринга из файла PHP моего виджета:

public function widget( $args, $instance )
{
$question = $instance['question'];
$answer = $instance['answer'];

echo $args['before_widget'];

if ( ! empty( $question ) )
{
echo '<h3 class="question">';
echo '. ';
echo $question;
echo '</h3>';
}
if ( ! empty( $answer ) )
{
echo '<p>';
echo $answer;
echo '</p>';
}

echo $args['after_widget'];
}

1

Решение

Есть несколько способов сделать это, но в итоге я использовал Расширенные пользовательские поля (который я уже использовал для других целей), чтобы сохранить / установить переменную. После настройки целочисленной переменной в ACF я сделал следующее (в моем PHP-файле Widget):

public function widget( $args, $instance )
{
$question = $instance['question'];
$answer = $instance['answer'];

echo $args['before_widget'];

if ( ! empty( $question ) )
{
echo '<h3 class="question">';
$question_count = (int) get_field('question_count');
$question_count++;
update_field('question_count', $question_count);
echo $question_count;
echo '. ';
echo $question;
echo '</h3>';
}
if ( ! empty( $answer ) )
{
echo '<p>';
echo $answer;
echo '</p>';
}

echo $args['after_widget'];
}

Я собираюсь оставить пост на пару дней, чтобы узнать, придет ли кто-нибудь с лучшим ответом без использования ACF, в случае, если у кого-то в будущем будет другой вариант использования, чем у меня.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]