如何在 WordPress 页面上创建小部件时对其进行动态编号?
How do I dynamically number widgets as they are created on a WordPress page?
我正在创建的 WordPress 网站有一个常见问题页面。每个 question/answer 对都是通过使用 SiteOrigin Page Builder Plugin 和自定义小部件创建的。我希望能够添加新问题并重新排列它们,而无需手动重新编号。
这是现在的样子:
我只想对问题进行动态编号(1.、2.、3. 等等,就在问题之前)。
我能想到一些可以完成此任务的 hack-ish 方法,例如滥用 <ol>
标记或全局变量。我也许还可以使用一些代码来计算使用 class "question" 创建的元素的数量,但感觉这会增加不必要的 code/latency一个简单的整数变量,仅在呈现此页面时存在。
在 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'];
}
有很多方法可以做到这一点,但我最终使用 Advanced Custom Fields(我已经将其用于其他事情)来 store/set 一个变量。在 ACF 中设置整数变量后,我执行了以下操作(在我的 Widget PHP 文件中):
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'];
}
我打算将 post 搁置几天,看看是否有人在不使用 ACF 的情况下提出更好的答案,以防万一有人有不同的 use-case 比我还多。
我正在创建的 WordPress 网站有一个常见问题页面。每个 question/answer 对都是通过使用 SiteOrigin Page Builder Plugin 和自定义小部件创建的。我希望能够添加新问题并重新排列它们,而无需手动重新编号。
这是现在的样子:
我只想对问题进行动态编号(1.、2.、3. 等等,就在问题之前)。
我能想到一些可以完成此任务的 hack-ish 方法,例如滥用 <ol>
标记或全局变量。我也许还可以使用一些代码来计算使用 class "question" 创建的元素的数量,但感觉这会增加不必要的 code/latency一个简单的整数变量,仅在呈现此页面时存在。
在 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'];
}
有很多方法可以做到这一点,但我最终使用 Advanced Custom Fields(我已经将其用于其他事情)来 store/set 一个变量。在 ACF 中设置整数变量后,我执行了以下操作(在我的 Widget PHP 文件中):
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'];
}
我打算将 post 搁置几天,看看是否有人在不使用 ACF 的情况下提出更好的答案,以防万一有人有不同的 use-case 比我还多。