/home/techb158/public_html/wp-includes
NameSizeModeActions
abilities-api/-0755rm
ai-client/-0755rm
assets/-0777rm
block-bindings/-0755rm
block-patterns/-0777rm
block-supports/-0777rm
blocks/-0777rm
build/-0755rm
certificates/-0777rm
css/-0777rm
customize/-0777rm
fonts/-0777rm
html-api/-0755rm
ID3/-0777rm
images/-0777rm
interactivity-api/-0755rm
IXR/-0777rm
js/-0777rm
l10n/-0755rm
php-ai-client/-0755rm
php-compat/-0777rm
PHPMailer/-0777rm
pomo/-0777rm
Requests/-0777rm
rest-api/-0777rm
SimplePie/-0777rm
sitemaps/-0777rm
sodium_compat/-0777rm
style-engine/-0777rm
Text/-0777rm
theme-compat/-0777rm
widgets/-0777rm
.htaccess1780644editdlrm
abilities-api.php328000666editdlrm
abilities.php117970666editdlrm
admin-bar.php400670666editdlrm
ai-client.php25490666editdlrm
atomlib.php121810666editdlrm
author-template.php198440666editdlrm
block-bindings.php76320666editdlrm
block-editor.php287240666editdlrm
block-i18n.json3160666editdlrm
block-patterns.php156060666editdlrm
block-template-utils.php631680666editdlrm
block-template.php182570666editdlrm
blocks.php1242050666editdlrm
bookmark-template.php127680666editdlrm
bookmark.php154270666editdlrm
cache-compat.php110210666editdlrm
cache.php134860666editdlrm
canonical.php347860666editdlrm
capabilities.php435840666editdlrm
category-template.php569900666editdlrm
category.php128340666editdlrm
class-avif-info.php300080666editdlrm
class-feed.php5390666editdlrm
class-http.php3670666editdlrm
class-IXR.php26090666editdlrm
class-json.php436760666editdlrm
class-oembed.php4010666editdlrm
class-phpass.php67710666editdlrm
class-phpmailer.php6640666editdlrm
class-pop3.php211000666editdlrm
class-requests.php22370666editdlrm
class-simplepie.php4530666editdlrm
class-smtp.php4570666editdlrm
class-snoopy.php377150666editdlrm
class-walker-category-dropdown.php24690666editdlrm
class-walker-category.php84770666editdlrm
class-walker-comment.php142210666editdlrm
class-walker-nav-menu.php120440666editdlrm
class-walker-page-dropdown.php27100666editdlrm
class-walker-page.php76120666editdlrm
class-wp-admin-bar.php180020666editdlrm
class-wp-ajax-response.php52880666editdlrm
class-wp-application-passwords.php170990666editdlrm
class-wp-block-bindings-registry.php82630666editdlrm
class-wp-block-bindings-source.php29920666editdlrm
class-wp-block-editor-context.php13500666editdlrm
class-wp-block-list.php47130666editdlrm
class-wp-block-metadata-registry.php118460666editdlrm
class-wp-block-parser-block.php25550666editdlrm
class-wp-block-parser-frame.php19940666editdlrm
class-wp-block-parser.php115250666editdlrm
class-wp-block-pattern-categories-registry.php43830666editdlrm
class-wp-block-patterns-registry.php102650666editdlrm
class-wp-block-processor.php699140666editdlrm
class-wp-block-styles-registry.php64190666editdlrm
class-wp-block-supports.php75780666editdlrm
class-wp-block-template.php21110666editdlrm
class-wp-block-templates-registry.php70800666editdlrm
class-wp-block-type-registry.php53050666editdlrm
class-wp-block-type.php172220666editdlrm
class-wp-block.php282360666editdlrm
class-wp-classic-to-block-menu-converter.php40260666editdlrm
class-wp-comment-query.php490400666editdlrm
class-wp-comment.php172490666editdlrm
class-wp-connector-registry.php151810666editdlrm
class-wp-customize-control.php261120666editdlrm
class-wp-customize-manager.php2029080666editdlrm
class-wp-customize-nav-menus.php580340666editdlrm
class-wp-customize-panel.php107030666editdlrm
class-wp-customize-section.php112090666editdlrm
class-wp-customize-setting.php299560666editdlrm
class-wp-customize-widgets.php725960666editdlrm
class-wp-date-query.php359700666editdlrm
class-wp-dependencies.php170890666editdlrm
class-wp-dependency.php26530666editdlrm
class-wp-duotone.php408360666editdlrm
class-wp-editor.php722280666editdlrm
class-wp-embed.php159080666editdlrm
class-wp-error.php75140666editdlrm
class-wp-exception.php2530666editdlrm
class-wp-fatal-error-handler.php81500666editdlrm
class-wp-feed-cache-transient.php33040666editdlrm
class-wp-feed-cache.php9690666editdlrm
class-wp-filter-sentinel.php7600666editdlrm
class-wp-hook.php174720666editdlrm
class-wp-http-cookie.php72690666editdlrm
class-wp-http-curl.php132610666editdlrm
class-wp-http-encoding.php66890666editdlrm
class-wp-http-ixr-client.php35160666editdlrm
class-wp-http-proxy.php59800666editdlrm
class-wp-http-requests-hooks.php20220666editdlrm
class-wp-http-requests-response.php42430666editdlrm
class-wp-http-response.php29770666editdlrm
class-wp-http-streams.php167640666editdlrm
class-wp-http.php416410666editdlrm
class-wp-icon-collections-registry.php58050666editdlrm
class-wp-icons-registry.php99030666editdlrm
class-wp-image-editor-gd.php207410666editdlrm
class-wp-image-editor-imagick.php434540666editdlrm
class-wp-image-editor.php174560666editdlrm
class-wp-list-util.php74430666editdlrm
class-wp-locale-switcher.php67760666editdlrm
class-wp-locale.php168480666editdlrm
class-wp-matchesmapregex.php18280666editdlrm
class-wp-meta-query.php305070666editdlrm
class-wp-metadata-lazyloader.php68330666editdlrm
class-wp-navigation-fallback.php91930666editdlrm
class-wp-network-query.php199890666editdlrm
class-wp-network.php124110666editdlrm
class-wp-object-cache.php175240666editdlrm
class-wp-oembed-controller.php69050666editdlrm
class-wp-oembed.php343720666editdlrm
class-wp-paused-extensions-storage.php50670666editdlrm
class-wp-phpmailer.php43480666editdlrm
class-wp-plugin-dependencies.php252090666editdlrm
class-wp-post-type.php306720666editdlrm
class-wp-post.php88060666editdlrm
class-wp-query.php1641480666editdlrm
class-wp-recovery-mode-cookie-service.php68770666editdlrm
class-wp-recovery-mode-email-service.php111620666editdlrm
class-wp-recovery-mode-key-service.php49140666editdlrm
class-wp-recovery-mode-link-service.php35230666editdlrm
class-wp-recovery-mode.php114600666editdlrm
class-wp-rewrite.php636930666editdlrm
class-wp-role.php25230666editdlrm
class-wp-roles.php93260666editdlrm
class-wp-script-modules.php407430666editdlrm
class-wp-scripts.php367540666editdlrm
class-wp-session-tokens.php73190666editdlrm
class-wp-simplepie-file.php35520666editdlrm
class-wp-simplepie-sanitize-kses.php19030666editdlrm
class-wp-site-query.php314820666editdlrm
class-wp-site.php78360666editdlrm
class-wp-speculation-rules.php78840666editdlrm
class-wp-styles.php133160666editdlrm
class-wp-tax-query.php195770666editdlrm
class-wp-taxonomy.php185590666editdlrm
class-wp-term-query.php407510666editdlrm
class-wp-term.php52630666editdlrm
class-wp-text-diff-renderer-inline.php9790666editdlrm
class-wp-text-diff-renderer-table.php189250666editdlrm
class-wp-textdomain-registry.php104810666editdlrm
class-wp-theme-json-data.php18050666editdlrm
class-wp-theme-json-resolver.php356920666editdlrm
class-wp-theme-json-schema.php73670666editdlrm
class-wp-theme-json.php2215060666editdlrm
class-wp-theme.php658110666editdlrm
class-wp-token-map.php290320666editdlrm
class-wp-url-pattern-prefixer.php48020666editdlrm
class-wp-user-meta-session-tokens.php29540666editdlrm
class-wp-user-query.php441020666editdlrm
class-wp-user-request.php23420666editdlrm
class-wp-user.php231890666editdlrm
class-wp-view-config-data.php294270666editdlrm
class-wp-walker.php132920666editdlrm
class-wp-widget-factory.php33430666editdlrm
class-wp-widget.php191290644editdlrm
class-wp-xmlrpc-server.php2162720666editdlrm
class-wp.php263710666editdlrm
class-wpdb.php1214370666editdlrm
class.wp-dependencies.php3730666editdlrm
class.wp-scripts.php3430666editdlrm
class.wp-styles.php3380666editdlrm
comment-template.php1032110666editdlrm
comment.php1506300666editdlrm
compat-utf8.php193860666editdlrm
compat.php231050644editdlrm
connectors.php329220666editdlrm
cron.php462660666editdlrm
date.php4000666editdlrm
default-constants.php113650666editdlrm
default-filters.php395000666editdlrm
default-widgets.php22880666editdlrm
deprecated.php1939770666editdlrm
embed-template.php3380666editdlrm
embed.php392150666editdlrm
error-protection.php40920666editdlrm
feed-atom-comments.php55040666editdlrm
feed-atom.php31140666editdlrm
feed-rdf.php26680666editdlrm
feed-rss.php11890666editdlrm
feed-rss2-comments.php41360666editdlrm
feed-rss2.php37990666editdlrm
feed.php251890666editdlrm
fonts.php97890666editdlrm
formatting.php3576520666editdlrm
functions.php2954810666editdlrm
functions.wp-scripts.php204920666editdlrm
functions.wp-styles.php86540666editdlrm
general-template.php1834720666editdlrm
global-styles-and-settings.php207800666editdlrm
http.php289610666editdlrm
https-detection.php58570666editdlrm
https-migration.php47410666editdlrm
icons.php63340666editdlrm
index.php10880444editdlrm
json-schema.php78020666editdlrm
kses.php884970666editdlrm
kwa.txt10644editdlrm
l10n.php714150666editdlrm
link-template.php1601430666editdlrm
load.php571480644editdlrm
locale.php1620666editdlrm
media-template.php657590666editdlrm
media.php2368040666editdlrm
meta.php667390666editdlrm
ms-blogs.php263240666editdlrm
ms-default-constants.php49210666editdlrm
ms-default-filters.php66360666editdlrm
ms-deprecated.php217870666editdlrm
ms-files.php28570666editdlrm
ms-functions.php932580644editdlrm
ms-load.php200550666editdlrm
ms-network.php37820666editdlrm
ms-settings.php41970666editdlrm
ms-site.php417290666editdlrm
nav-menu-template.php259830666editdlrm
nav-menu.php442690666editdlrm
option.php1052460666editdlrm
pluggable-deprecated.php63240666editdlrm
pluggable.php1279190666editdlrm
plugin.php391100644editdlrm
post-formats.php70700666editdlrm
post-template.php691290666editdlrm
post-thumbnail-template.php108790666editdlrm
post.php3052150666editdlrm
query.php375540666editdlrm
registration-functions.php2000666editdlrm
registration.php2000666editdlrm
rest-api.php1029510666editdlrm
revision.php312410666editdlrm
rewrite.php195670666editdlrm
robots-template.php51850666editdlrm
rss-functions.php2770666editdlrm
rss.php232030666editdlrm
script-loader.php1635500666editdlrm
script-modules.php123110666editdlrm
session.php2580666editdlrm
shortcodes.php240340666editdlrm
sitemaps.php32380666editdlrm
speculative-loading.php118800666editdlrm
spl-autoload-compat.php4410666editdlrm
style-engine.php80450666editdlrm
taxonomy.php1783070666editdlrm
template-canvas.php5440666editdlrm
template-loader.php42670666editdlrm
template.php368240666editdlrm
theme-i18n.json18920666editdlrm
theme-previews.php28870666editdlrm
theme-templates.php40600666editdlrm
theme.json94800666editdlrm
theme.php1346410666editdlrm
update.php382690666editdlrm
user.php1803010666editdlrm
utf8.php69770666editdlrm
vars.php66000666editdlrm
version.php18090644editdlrm
view-config.php190870666editdlrm
view-transitions.php6020666editdlrm
widgets.php708660666editdlrm
wp-db.php4450666editdlrm
wp-diff.php7920666editdlrm
Edit: /home/techb158/public_html/wp-includes/block-template.php (18257B)

%1$s

%2$s

%4$s
', esc_html( $block_template->title ), __( 'This page is blank because the template is empty. You can reset or customize it in the Site Editor.' ), get_edit_post_link( $block_template->wp_id, 'site-editor' ), __( 'Edit template' ) ); } /** * Finds a block template with equal or higher specificity than a given PHP template file. * * Internally, this communicates the block content that needs to be used by the template canvas through a global variable. * * @since 5.8.0 * @since 6.3.0 Added `$_wp_current_template_id` global for editing of current template directly from the admin bar. * * @global string $_wp_current_template_content * @global string $_wp_current_template_id * * @param string $template Path to the template. See locate_template(). * @param string $type Sanitized filename without extension. * @param string[] $templates A list of template candidates, in descending order of priority. * @return string The path to the Site Editor template canvas file, or the fallback PHP template. */ function locate_block_template( $template, $type, array $templates ) { global $_wp_current_template_content, $_wp_current_template_id; if ( ! current_theme_supports( 'block-templates' ) ) { return $template; } if ( $template ) { /* * locate_template() has found a PHP template at the path specified by $template. * That means that we have a fallback candidate if we cannot find a block template * with higher specificity. * * Thus, before looking for matching block themes, we shorten our list of candidate * templates accordingly. */ // Locate the index of $template (without the theme directory path) in $templates. $relative_template_path = str_replace( array( get_stylesheet_directory() . '/', get_template_directory() . '/' ), '', $template ); $index = array_search( $relative_template_path, $templates, true ); // If the template hierarchy algorithm has successfully located a PHP template file, // we will only consider block templates with higher or equal specificity. $templates = array_slice( $templates, 0, $index + 1 ); } $block_template = resolve_block_template( $type, $templates, $template ); if ( $block_template ) { $_wp_current_template_id = $block_template->id; if ( empty( $block_template->content ) ) { if ( is_user_logged_in() ) { $_wp_current_template_content = wp_render_empty_block_template_warning( $block_template ); } else { if ( $block_template->has_theme_file ) { // Show contents from theme template if user is not logged in. $theme_template = _get_block_template_file( 'wp_template', $block_template->slug ); $_wp_current_template_content = file_get_contents( $theme_template['path'] ); } else { $_wp_current_template_content = $block_template->content; } } } elseif ( ! empty( $block_template->content ) ) { $_wp_current_template_content = $block_template->content; } if ( isset( $_GET['_wp-find-template'] ) ) { wp_send_json_success( $block_template ); } } else { if ( $template ) { return $template; } if ( 'index' === $type ) { if ( isset( $_GET['_wp-find-template'] ) ) { wp_send_json_error( array( 'message' => __( 'No matching template found.' ) ) ); } } else { return ''; // So that the template loader keeps looking for templates. } } // Add hooks for template canvas. // Add viewport meta tag. add_action( 'wp_head', '_block_template_viewport_meta_tag', 0 ); // Render title tag with content, regardless of whether theme has title-tag support. remove_action( 'wp_head', '_wp_render_title_tag', 1 ); // Remove conditional title tag rendering... add_action( 'wp_head', '_block_template_render_title_tag', 1 ); // ...and make it unconditional. // This file will be included instead of the theme's template file. return ABSPATH . WPINC . '/template-canvas.php'; } /** * Returns the correct 'wp_template' to render for the request template type. * * @access private * @since 5.8.0 * @since 5.9.0 Added the `$fallback_template` parameter. * * @param string $template_type The current template type. * @param string[] $template_hierarchy The current template hierarchy, ordered by priority. * @param string $fallback_template A PHP fallback template to use if no matching block template is found. * @return WP_Block_Template|null template A template object, or null if none could be found. */ function resolve_block_template( $template_type, $template_hierarchy, $fallback_template ) { if ( ! $template_type ) { return null; } if ( empty( $template_hierarchy ) ) { $template_hierarchy = array( $template_type ); } $slugs = array_map( '_strip_template_file_suffix', $template_hierarchy ); // Find all potential templates 'wp_template' post matching the hierarchy. $query = array( 'slug__in' => $slugs, ); $templates = get_block_templates( $query ); // Order these templates per slug priority. // Build map of template slugs to their priority in the current hierarchy. $slug_priorities = array_flip( $slugs ); usort( $templates, static function ( $template_a, $template_b ) use ( $slug_priorities ) { return $slug_priorities[ $template_a->slug ] - $slug_priorities[ $template_b->slug ]; } ); $theme_base_path = get_stylesheet_directory() . DIRECTORY_SEPARATOR; $parent_theme_base_path = get_template_directory() . DIRECTORY_SEPARATOR; // Is the active theme a child theme, and is the PHP fallback template part of it? if ( str_starts_with( $fallback_template, $theme_base_path ) && ! str_contains( $fallback_template, $parent_theme_base_path ) ) { $fallback_template_slug = substr( $fallback_template, // Starting position of slug. strpos( $fallback_template, $theme_base_path ) + strlen( $theme_base_path ), // Remove '.php' suffix. -4 ); // Is our candidate block template's slug identical to our PHP fallback template's? if ( count( $templates ) && $fallback_template_slug === $templates[0]->slug && 'theme' === $templates[0]->source ) { // Unfortunately, we cannot trust $templates[0]->theme, since it will always // be set to the active theme's slug by _build_block_template_result_from_file(), // even if the block template is really coming from the active theme's parent. // (The reason for this is that we want it to be associated with the active theme // -- not its parent -- once we edit it and store it to the DB as a wp_template CPT.) // Instead, we use _get_block_template_file() to locate the block template file. $template_file = _get_block_template_file( 'wp_template', $fallback_template_slug ); if ( $template_file && get_template() === $template_file['theme'] ) { // The block template is part of the parent theme, so we // have to give precedence to the child theme's PHP template. array_shift( $templates ); } } } return count( $templates ) ? $templates[0] : null; } /** * Displays title tag with content, regardless of whether theme has title-tag support. * * @access private * @since 5.8.0 * * @see _wp_render_title_tag() */ function _block_template_render_title_tag() { echo '' . wp_get_document_title() . '' . "\n"; } /** * Returns the markup for the current template. * * @access private * @since 5.8.0 * * @global string $_wp_current_template_id * @global string $_wp_current_template_content * @global WP_Embed $wp_embed WordPress Embed object. * @global WP_Query $wp_query WordPress Query object. * * @return string Block template markup. */ function get_the_block_template_html() { global $_wp_current_template_id, $_wp_current_template_content, $wp_embed, $wp_query; if ( ! $_wp_current_template_content ) { if ( is_user_logged_in() ) { return '

' . esc_html__( 'No matching template found' ) . '

'; } return ''; } $content = $wp_embed->run_shortcode( $_wp_current_template_content ); $content = $wp_embed->autoembed( $content ); $content = shortcode_unautop( $content ); $content = do_shortcode( $content ); /* * Most block themes omit the `core/query` and `core/post-template` blocks in their singular content templates. * While this technically still works since singular content templates are always for only one post, it results in * the main query loop never being entered which causes bugs in core and the plugin ecosystem. * * The workaround below ensures that the loop is started even for those singular templates. The while loop will by * definition only go through a single iteration, i.e. `do_blocks()` is only called once. Additional safeguard * checks are included to ensure the main query loop has not been tampered with and really only encompasses a * single post. * * Even if the block template contained a `core/query` and `core/post-template` block referencing the main query * loop, it would not cause errors since it would use a cloned instance and go through the same loop of a single * post, within the actual main query loop. * * This special logic should be skipped if the current template does not come from the current theme, in which case * it has been injected by a plugin by hijacking the block template loader mechanism. In that case, entirely custom * logic may be applied which is unpredictable and therefore safer to omit this special handling on. */ if ( $_wp_current_template_id && str_starts_with( $_wp_current_template_id, get_stylesheet() . '//' ) && is_singular() && 1 === $wp_query->post_count && have_posts() ) { while ( have_posts() ) { the_post(); $content = do_blocks( $content ); } } else { $content = do_blocks( $content ); } $content = wptexturize( $content ); $content = convert_smilies( $content ); $content = wp_filter_content_tags( $content, 'template' ); $content = str_replace( ']]>', ']]>', $content ); // Wrap block template in .wp-site-blocks to allow for specific descendant styles // (e.g. `.wp-site-blocks > *`). $template_html = '
' . $content . '
'; // Back-compat for plugins that disable functionality by unhooking one of these actions. if ( ! has_action( 'wp_footer', 'the_block_template_skip_link' ) || ! has_action( 'wp_enqueue_scripts', 'wp_enqueue_block_template_skip_link' ) ) { return $template_html; } return _block_template_add_skip_link( $template_html ); } /** * Inserts the block template skip-link into the template HTML. * * When a `MAIN` element exists in the template, this function will ensure * that the element contains an `id` attribute, and it will insert a link to * that `MAIN` element before the first `DIV.wp-site-blocks` element, which * is the wrapper for all blocks in a block template as constructed by * {@see get_the_block_template_html()}. * * Example: * * // Input. *
* *
*

... * * // Output. * *
* *
*

... * * When the `MAIN` element already contains a non-empty `id` value it will be * used instead of the default skip-link id. * * @access private * @since 7.0.0 * * @param string $template_html Block template markup. * @return string Modified markup with skip link when applicable. */ function _block_template_add_skip_link( string $template_html ): string { // Anonymous subclass of WP_HTML_Tag_Processor to access protected bookmark spans. $processor = new class( $template_html ) extends WP_HTML_Tag_Processor { /** * Inserts text before the current token. * * @param string $text Text to insert. */ public function insert_before( string $text ) { $this->set_bookmark( 'here' ); $this->lexical_updates[] = new WP_HTML_Text_Replacement( $this->bookmarks['here']->start, 0, $text ); } }; // Find and bookmark the first DIV.wp-site-blocks. if ( ! $processor->next_tag( array( 'tag_name' => 'DIV', 'class_name' => 'wp-site-blocks', ) ) ) { return $template_html; } $processor->set_bookmark( 'skip_link_insertion_point' ); // Ensure the MAIN element has an ID. if ( ! $processor->next_tag( 'MAIN' ) ) { return $template_html; } $skip_link_target_id = $processor->get_attribute( 'id' ); if ( ! is_string( $skip_link_target_id ) || '' === $skip_link_target_id ) { $skip_link_target_id = 'wp--skip-link--target'; $processor->set_attribute( 'id', $skip_link_target_id ); } // Seek back to the bookmarked insertion point. $processor->seek( 'skip_link_insertion_point' ); $skip_link = sprintf( '', esc_url( '#' . $skip_link_target_id ), /* translators: Hidden accessibility text. */ esc_html__( 'Skip to content' ) ); $processor->insert_before( $skip_link ); return $processor->get_updated_html(); } /** * Renders a 'viewport' meta tag. * * This is hooked into {@see 'wp_head'} to decouple its output from the default template canvas. * * @access private * @since 5.8.0 */ function _block_template_viewport_meta_tag() { echo '' . "\n"; } /** * Strips .php or .html suffix from template file names. * * @access private * @since 5.8.0 * * @param string $template_file Template file name. * @return string Template file name without extension. */ function _strip_template_file_suffix( $template_file ) { return preg_replace( '/\.(php|html)$/', '', $template_file ); } /** * Removes post details from block context when rendering a block template. * * @access private * @since 5.8.0 * * @param array $context Default context. * * @return array Filtered context. */ function _block_template_render_without_post_block_context( $context ) { /* * When loading a template directly and not through a page that resolves it, * the top-level post ID and type context get set to that of the template. * Templates are just the structure of a site, and they should not be available * as post context because blocks like Post Content would recurse infinitely. */ if ( isset( $context['postType'] ) && 'wp_template' === $context['postType'] ) { unset( $context['postId'] ); unset( $context['postType'] ); } return $context; } /** * Sets the current WP_Query to return auto-draft posts. * * The auto-draft status indicates a new post, so allow the WP_Query instance to * return an auto-draft post for template resolution when editing a new post. * * @access private * @since 5.9.0 * * @param WP_Query $wp_query Current WP_Query instance, passed by reference. */ function _resolve_template_for_new_post( $wp_query ) { if ( ! $wp_query->is_main_query() ) { return; } remove_filter( 'pre_get_posts', '_resolve_template_for_new_post' ); // Pages. $page_id = $wp_query->query['page_id'] ?? null; // Posts, including custom post types. $p = $wp_query->query['p'] ?? null; $post_id = $page_id ? $page_id : $p; $post = get_post( $post_id ); if ( $post && 'auto-draft' === $post->post_status && current_user_can( 'edit_post', $post->ID ) ) { $wp_query->set( 'post_status', 'auto-draft' ); } } /** * Register a block template. * * @since 6.7.0 * * @param string $template_name Template name in the form of `plugin_uri//template_name`. * @param array|string $args { * @type string $title Optional. Title of the template as it will be shown in the Site Editor * and other UI elements. * @type string $description Optional. Description of the template as it will be shown in the Site * Editor. * @type string $content Optional. Default content of the template that will be used when the * template is rendered or edited in the editor. * @type string[] $post_types Optional. Array of post types to which the template should be available. * @type string $plugin Optional. Slug of the plugin that registers the template. * } * @return WP_Block_Template|WP_Error The registered template object on success, WP_Error object on failure. */ function register_block_template( $template_name, $args = array() ) { return WP_Block_Templates_Registry::get_instance()->register( $template_name, $args ); } /** * Unregister a block template. * * @since 6.7.0 * * @param string $template_name Template name in the form of `plugin_uri//template_name`. * @return WP_Block_Template|WP_Error The unregistered template object on success, WP_Error object on failure or if the * template doesn't exist. */ function unregister_block_template( $template_name ) { return WP_Block_Templates_Registry::get_instance()->unregister( $template_name ); }