Unikalny identyfikator krótkich kodów WordPress, jeśli jest używany więcej niż raz na stronie?
![Unikalny identyfikator krótkich kodów WordPress, jeśli jest używany więcej niż raz na stronie?](https://oen.pl/wp-content/uploads/2023/09/apple-touch-icon@2.png)
Chciałem rozwinąć odpowiedzi na przykładach dla tych, którzy potrzebują pomocy.
Możliwe powody, dla których tu jesteś:
- Wiele wystąpień tych samych krótkich kodów z unikalnym identyfikatorem
- Potrzebujesz tego samego krótkiego kodu, który generuje unikalną klasę przy każdym wywołaniu
- Ustaw licznik zmienny, aby zliczać użycie krótkiego kodu
- Jak policzyć, ile razy użyłeś krótkiego kodu na bieżącej stronie
- Ustaw unikalny numer rosnący dla każdego krótkiego kodu
- ustaw losową liczbę dla krótkiego kodu atrybutu danych
Użyj zmiennej statycznej, aby zliczyć każde wywołanie krótkiego kodu
Ze zmienną statyczną o wartości int static $count = 1;
wywoływane, możemy zwiększać wartość przy każdym wywołaniu krótkiego kodu za pomocą $count++;
. Używam tego do dodawania niestandardowych identyfikatorów do wyjściowego kodu HTML krótkiego kodu pokazu slajdów SwiperJS, który pobiera niestandardowe obrazy polecane typu post, których ponownie używam na tej samej stronie. SwiperJS wymaga, aby każdy element miał unikalną klasę. Dzięki temu nowemu, unikalnemu identyfikatorowi JavaScript może inicjować każdy z nich jako unikalny obiekt lub wykorzystać go do celów stylizacyjnych.
Przykład 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();
}
Przykład 1 Krótkie kody
[count_example count="foo"]
[count_example count="true"]
[count_example]
Przykład 1 Wyjście
<div id="example-1">html stuff</div>
<div id="example-2">html stuff</div>
<div id="example">html stuff</div>
Przykład wielowarstwowy
Potrzebujesz licznika i potrzebujesz unikalnego identyfikatora, klasy lub atrybutu danych, rozważ użycie uniqueid()
Lub 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); //
$random_integer = random_int(100, 999); //
// 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();
}
Przykład 2 Krótkie kody
[count_example]
[count_example]
Przykład 2 Dane wyjściowe
<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>