1

我正在创建的 WordPress 网站有一个常见问题页面。每个问题/答案对都是通过使用SiteOrigin Page Builder Plugin和自定义小部件创建的。我希望能够添加新问题并重新排列它们,而无需手动重新编号。

这是它现在的样子:

SiteOrigin 页面构建器视图

我只想对问题进行动态编号(1.、2.、3. 等等,就在问题之前)。

我可以想到一些可能完成此任务的黑客方法,例如滥用<ol>标签或全局变量。我也许还可以使用一些代码来计算使用“问题”类创建的元素的数量,但感觉这会给使用仅存在的简单整数变量增加不必要的代码/延迟时间此页面正在呈现。

可以在 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'];
}
4

1 回答 1

0

有很多方法可以做到这一点,但我最终使用高级自定义字段(我已经将其用于其他事情)来存储/设置变量。在 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'];
}

我将把帖子搁置几天,看看是否有人在不使用 ACF 的情况下提出更好的答案,以防有人在路上的用例与我不同。

于 2017-01-20T21:52:41.657 回答