Skip to content

Commit

Permalink
moved deprecated functions into compat directory
Browse files Browse the repository at this point in the history
  • Loading branch information
gaambo committed Feb 9, 2024
1 parent 641db4e commit dd6857c
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 86 deletions.
83 changes: 83 additions & 0 deletions lib/compat/wordpress-6.5/navigation-block-variations.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<?php

/**
* Workaround for Core versions < 6.5 to register navigation link variations on registration
*
* @param array $args The block type arguments.
* @return array The updated block type arguments.
*/
function gutenberg_navigation_link_variations_compat( $args ) {

if ( 'core/navigation-link' !== $args['name'] || ! empty( $args['variation_callback'] ) ) {
return $args;
}
$args['variation_callback'] = 'build_navigation_link_block_variations';
return $args;
}

if ( ! method_exists( 'WP_Block_Type', 'get_variations' ) ) {
add_filter( 'register_block_type_args', 'gutenberg_navigation_link_variations_compat', 9 );
}

/**
* Registers custom post type variations for navigation link on post type registration
* Handles all post types registered after the block is registered in register_navigation_link_post_type_variations
*
* @since 6.5.0
* @deprecated 6.5.0 Use WP_Block_Type::get_variations / get_block_type_variations filter instead.
*
* @param string $post_type The post type name passed from registered_post_type action hook.
* @param WP_Post_Type $post_type_object The post type object passed from registered_post_type.
*/
function block_core_navigation_link_register_post_type_variation( $post_type, $post_type_object ) { // phpcs:ignore Gutenberg.CodeAnalysis.GuardedFunctionAndClassNames.FunctionNotGuardedAgainstRedeclaration
_deprecated_function( __FUNCTION__, '6.5.0', 'WP_Block_Type::get_variations' );
if ( $post_type_object->show_in_nav_menus ) {
$variation = build_variation_for_navigation_link( $post_type_object, 'post-type' );
block_core_navigation_link_register_variation( $variation );
}
}

/**
* Registers a custom taxonomy variation for navigation link on taxonomy registration
* Handles all taxonomies registered after the block is registered in register_navigation_link_post_type_variations
*
* @since 6.5.0
* @deprecated 6.5.0 Use WP_Block_Type::get_variations / get_block_type_variations filter instead.
*
* @param string $taxonomy Taxonomy slug.
* @param array|string $object_type Object type or array of object types.
* @param array $args Array of taxonomy registration arguments.
*/
function block_core_navigation_link_register_taxonomy_variation( $taxonomy, $object_type, $args ) { // phpcs:ignore Gutenberg.CodeAnalysis.GuardedFunctionAndClassNames.FunctionNotGuardedAgainstRedeclaration
_deprecated_function( __FUNCTION__, '6.5.0', 'WP_Block_Type::get_variations' );
if ( isset( $args['show_in_nav_menus'] ) && $args['show_in_nav_menus'] ) {
$variation = build_variation_for_navigation_link( (object) $args, 'post-type' );
block_core_navigation_link_register_variation( $variation );
}
}

/**
* Unregisters a custom post type variation for navigation link on post type unregistration.
*
* @since 6.5.0
* @deprecated 6.5.0 Use WP_Block_Type::get_variations / get_block_type_variations filter instead.
*
* @param string $post_type The post type name passed from unregistered_post_type action hook.
*/
function block_core_navigation_link_unregister_post_type_variation( $post_type ) { // phpcs:ignore Gutenberg.CodeAnalysis.GuardedFunctionAndClassNames.FunctionNotGuardedAgainstRedeclaration
_deprecated_function( __FUNCTION__, '6.5.0', 'WP_Block_Type::get_variations' );
block_core_navigation_link_unregister_variation( $post_type );
}

/**
* Unregisters a custom taxonomy variation for navigation link on taxonomy unregistration.
*
* @since 6.5.0
* @deprecated 6.5.0 Use WP_Block_Type::get_variations / get_block_type_variations filter instead.
*
* @param string $taxonomy The taxonomy name passed from unregistered_taxonomy action hook.
*/
function block_core_navigation_link_unregister_taxonomy_variation( $taxonomy ) { // phpcs:ignore Gutenberg.CodeAnalysis.GuardedFunctionAndClassNames.FunctionNotGuardedAgainstRedeclaration
_deprecated_function( __FUNCTION__, '6.5.0', 'WP_Block_Type::get_variations' );
block_core_navigation_link_unregister_variation( $taxonomy );
}
1 change: 1 addition & 0 deletions lib/load.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ function gutenberg_is_experiment_enabled( $name ) {
require __DIR__ . '/compat/wordpress-6.5/interactivity-api/interactivity-api.php';
require __DIR__ . '/compat/wordpress-6.5/class-wp-script-modules.php';
require __DIR__ . '/compat/wordpress-6.5/scripts-modules.php';
require __DIR__ . '/compat/wordpress-6.5/navigation-block-variations.php';
if ( ! class_exists( 'WP_Block_Bindings_Source' ) ) {
require __DIR__ . '/compat/wordpress-6.5/block-bindings/class-wp-block-bindings-source.php';
}
Expand Down
87 changes: 1 addition & 86 deletions packages/block-library/src/navigation-link/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -460,24 +460,10 @@ function block_core_navigation_link_build_variations() {
* @throws WP_Error An WP_Error exception parsing the block definition.
*/
function register_block_core_navigation_link() {
/*
* On Core versions < 6.5 get_block_type_variations is not available.
* Therefore directly register the variations for post/taxonomies that have been registered at this point.
* This keeps pre-6.5 behaviour in pre-6.5 versions.
*
* This callback will be called by a shim in lib/compat/wordpress-6.5/blocks.php
*
* TODO: After two WP versions (6.7), we can remove this.
*/
$variations_callback = null;
if ( ! method_exists( 'WP_Block_Type', 'get_variations' ) ) {
$variations_callback = 'build_navigation_link_block_variations';
}
register_block_type_from_metadata(
__DIR__ . '/navigation-link',
array(
'render_callback' => 'render_block_core_navigation_link',
'variation_callback' => $variations_callback,
'render_callback' => 'render_block_core_navigation_link',
)
);
}
Expand All @@ -487,74 +473,3 @@ function register_block_core_navigation_link() {
* Do not use variation_callback, to also account for unregistering post types/taxonomies later on.
*/
add_action( 'get_block_type_variations', 'block_core_navigation_link_filter_variations', 10, 2 );

/**
* Registers custom post type variations for navigation link on post type registration
* Handles all post types registered after the block is registered in register_navigation_link_post_type_variations
*
* @since 6.5.0
* @deprecated 6.5.0 Use WP_Block_Type::get_variations / get_block_type_variations filter instead.
*
* TODO: After two WP versions (6.7), we can remove this.
*
* @param string $post_type The post type name passed from registered_post_type action hook.
* @param WP_Post_Type $post_type_object The post type object passed from registered_post_type.
*/
function block_core_navigation_link_register_post_type_variation( $post_type, $post_type_object ) {
_deprecated_function( __FUNCTION__, '6.5.0', 'WP_Block_Type::get_variations' );
if ( $post_type_object->show_in_nav_menus ) {
$variation = build_variation_for_navigation_link( $post_type_object, 'post-type' );
block_core_navigation_link_register_variation( $variation );
}
}

/**
* Registers a custom taxonomy variation for navigation link on taxonomy registration
* Handles all taxonomies registered after the block is registered in register_navigation_link_post_type_variations
*
* @since 6.5.0
* @deprecated 6.5.0 Use WP_Block_Type::get_variations / get_block_type_variations filter instead.
*
* TODO: After two WP versions (6.7), we can remove this.
*
* @param string $taxonomy Taxonomy slug.
* @param array|string $object_type Object type or array of object types.
* @param array $args Array of taxonomy registration arguments.
*/
function block_core_navigation_link_register_taxonomy_variation( $taxonomy, $object_type, $args ) {
_deprecated_function( __FUNCTION__, '6.5.0', 'WP_Block_Type::get_variations' );
if ( isset( $args['show_in_nav_menus'] ) && $args['show_in_nav_menus'] ) {
$variation = build_variation_for_navigation_link( (object) $args, 'post-type' );
block_core_navigation_link_register_variation( $variation );
}
}

/**
* Unregisters a custom post type variation for navigation link on post type unregistration.
*
* @since 6.5.0
* @deprecated 6.5.0 Use WP_Block_Type::get_variations / get_block_type_variations filter instead.
*
* TODO: After two WP versions (6.7), we can remove this.
*
* @param string $post_type The post type name passed from unregistered_post_type action hook.
*/
function block_core_navigation_link_unregister_post_type_variation( $post_type ) {
_deprecated_function( __FUNCTION__, '6.5.0', 'WP_Block_Type::get_variations' );
block_core_navigation_link_unregister_variation( $post_type );
}

/**
* Unregisters a custom taxonomy variation for navigation link on taxonomy unregistration.
*
* @since 6.5.0
* @deprecated 6.5.0 Use WP_Block_Type::get_variations / get_block_type_variations filter instead.
*
* TODO: After two WP versions (6.7), we can remove this.
*
* @param string $taxonomy The taxonomy name passed from unregistered_taxonomy action hook.
*/
function block_core_navigation_link_unregister_taxonomy_variation( $taxonomy ) {
_deprecated_function( __FUNCTION__, '6.5.0', 'WP_Block_Type::get_variations' );
block_core_navigation_link_unregister_variation( $taxonomy );
}

0 comments on commit dd6857c

Please sign in to comment.