我想为那些需要帮助的人举例说明答案。
如何计算帖子中的短代码可能的原因:
具有唯一id的相同短代码的多个实例需要相同的短代码输出唯一类每次调用设置一个变量计数器来统计短代码使用情况如何统计当前页面上使用短代码的次数为每个短代码设置唯一递增数为数据属性设置一个随机数shortcode使用静态变量计算每个shortcode调用
https://www.php.net/manual/en/language.variables.scope.php#language.variables.scope.static
使用具有int值的静态变量
static $count = 1;
调用时,我们可以使用
$count++;
. 我使用它将自定义ID添加到SwiperJS幻灯片放映短代码的输出html中,该短代码可以拉入我在同一页面上重复使用的自定义帖子类型特征图像。SwiperJS要求每个元素都有一个唯一的类。有了这个新的唯一ID,javascript可以将每个对象初始化为唯一对象或用于样式设计目的。
示例1 PHP
add_shortcode(\'count_example\', \'count_example_shortcode\');
function count_example_shortcode( $atts = [], $content = null) {
// Options
ob_start();
/**
* Static variable
*/
static $count = 1; // if your prefer to start with zero change to 0
$atts = shortcode_atts(
[
// Shortcode Attribute defaults
\'count\' => \'true\',
],
$atts
);
// You can check if shortcode attribute is set
if ($atts[\'count\'] == true) {
echo \'<div id="example-\'.$count.\'">html stuff</div>\';
// or check the string value of attribute
} elseif ($atts[\'count\'] == "true") {
echo \'<div id="example-\'.$count.\'">html stuff</div>\';
// Use this below if no attributes are set
else {
echo \'<div id="example">html stuff</div>\';
}
/**
* Increment int variable $count for each shortcode call
*/
$count++;
return ob_get_clean();
}
示例1短代码
[count_example count="foo"]
[count_example count="true"]
[count_example]
示例1输出
<div id="example-1">html stuff</div>
<div id="example-2">html stuff</div>
<div id="example">html stuff</div>
多层示例需要一个计数器,并且需要唯一的ID、类或数据属性,请考虑使用
uniqueid()
或
random_int()
.
add_shortcode(\'count_example\', \'count_example_shortcode\');
function count_example_shortcode( $atts = [], $content = null) {
// Options
ob_start();
/**
* Static Variable Counter, UniqueID, or Random_int
*/
$count = 1;
$prefix = \'example-\';
$uniqueID = $uniqid = uniqid($prefix); // https://www.php.net/manual/en/function.uniqid
$random_integer = random_int(100, 999); // https://www.php.net/manual/en/function.random-int.php
// Attributes not used in this example, kept in example for complete structure
$atts = shortcode_atts(
[
\'count\' => \'true\',
],
$atts
);
echo \'<div class="exammple-\'.$count.\'" id="\'.$uniqueID.\'" data-id="\'.$random_integer.\'">html stuff</div>\';
return ob_get_clean();
}
示例2短代码
[count_example]
[count_example]
示例2输出
<div class="example-1" id="example-4b3403665fea6" data-id="735">html stuff</div>
<div class="example-2" id="example-4fe424wg4w33f" data-id="924">html stuff</div>