Созданный мной веб-сайт WordPress имеет страницу часто задаваемых вопросов. Каждая пара вопросов / ответов создается с использованием SiteOrigin Плагин Построителя Страниц и пользовательский виджет. Я хотел бы иметь возможность добавлять новые вопросы и переставлять их без необходимости перенумерации вручную.
Вот как это выглядит прямо сейчас:
Я просто хотел бы, чтобы вопросы были динамически пронумерованы (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'];
}
Есть несколько способов сделать это, но в итоге я использовал Расширенные пользовательские поля (который я уже использовал для других целей), чтобы сохранить / установить переменную. После настройки целочисленной переменной в 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, в случае, если у кого-то в будущем будет другой вариант использования, чем у меня.
Других решений пока нет …