[wp-trac] [WordPress Trac] #54871: Specify which params are required in add_shortcode callback
WordPress Trac
noreply at wordpress.org
Sat Jan 22 15:26:33 UTC 2022
#54871: Specify which params are required in add_shortcode callback
-------------------------+------------------------------
Reporter: mkarimzada | Owner: (none)
Type: enhancement | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Shortcodes | Version: 5.8.3
Severity: trivial | Resolution:
Keywords: php8 close | Focuses: docs
-------------------------+------------------------------
Changes (by jrf):
* keywords: needs-dev-note needs-codex needs-docs php8 => php8 close
Comment:
@mkarimzada Thanks for opening this ticket.
I must be missing something, but as far as I can see the docblock
specifies exactly which parameters are expected and in which order on the
lines just below the one you linked:
> Every shortcode callback is passed three parameters by default,
> including an array of attributes (`$atts`), the shortcode content
> or null if not set (`$content`), and finally the shortcode tag
> itself (`$shortcode_tag`), in that order.
https://github.com/WordPress/wordpress-
develop/blob/ba943e113d3b31b121f77a2d30aebe14b047c69d/src/wp-
includes/shortcodes.php#L58-L61
When I read that, I come to a function signature of:
{{{#!php
<?php
function my_shortcode_callback($atts = array(), $content = null,
$short_tag = '') {}
// Or in typed form:
function my_shortcode_callback(array $atts = array(), ?string $content =
null, string $short_tag = '') {}
}}}
The first two parameters are "optional" as the shortcode when used:
* may not be passed any attributes `[my_shortcode]content[/my_shortcode]`
* may not be passed any content `[my_shortcode att="value" /]`
The third parameter is optional as, if the callback function is used only
for that one shortcode, it won't be needed in the callback function
itself.
WordPress will always pass all three parameters, but the callback function
definition can leave off the third, the second and third or even all
parameters.
Note: PHP 8.0 named parameters are not supported, so these parameters are
passed positionally.
So what is the enhancement you expect here ?
--
Ticket URL: <https://core.trac.wordpress.org/ticket/54871#comment:2>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list