Changeset 53559
- Timestamp:
- 06/23/2022 06:46:18 PM (2 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/includes/post.php
r53455 r53559 2149 2149 2150 2150 /** 2151 * Returns whether the post can be edited in the block editor.2152 *2153 * @since 5.0.02154 *2155 * @param int|WP_Post $post Post ID or WP_Post object.2156 * @return bool Whether the post can be edited in the block editor.2157 */2158 function use_block_editor_for_post( $post ) {2159 $post = get_post( $post );2160 2161 if ( ! $post ) {2162 return false;2163 }2164 2165 // We're in the meta box loader, so don't use the block editor.2166 if ( isset( $_GET['meta-box-loader'] ) ) {2167 check_admin_referer( 'meta-box-loader', 'meta-box-loader-nonce' );2168 return false;2169 }2170 2171 $use_block_editor = use_block_editor_for_post_type( $post->post_type );2172 2173 /**2174 * Filters whether a post is able to be edited in the block editor.2175 *2176 * @since 5.0.02177 *2178 * @param bool $use_block_editor Whether the post can be edited or not.2179 * @param WP_Post $post The post being checked.2180 */2181 return apply_filters( 'use_block_editor_for_post', $use_block_editor, $post );2182 }2183 2184 /**2185 * Returns whether a post type is compatible with the block editor.2186 *2187 * The block editor depends on the REST API, and if the post type is not shown in the2188 * REST API, then it won't work with the block editor.2189 *2190 * @since 5.0.02191 *2192 * @param string $post_type The post type.2193 * @return bool Whether the post type can be edited with the block editor.2194 */2195 function use_block_editor_for_post_type( $post_type ) {2196 if ( ! post_type_exists( $post_type ) ) {2197 return false;2198 }2199 2200 if ( ! post_type_supports( $post_type, 'editor' ) ) {2201 return false;2202 }2203 2204 $post_type_object = get_post_type_object( $post_type );2205 if ( $post_type_object && ! $post_type_object->show_in_rest ) {2206 return false;2207 }2208 2209 /**2210 * Filters whether a post is able to be edited in the block editor.2211 *2212 * @since 5.0.02213 *2214 * @param bool $use_block_editor Whether the post type can be edited or not. Default true.2215 * @param string $post_type The post type being checked.2216 */2217 return apply_filters( 'use_block_editor_for_post_type', true, $post_type );2218 }2219 2220 /**2221 2151 * Prepares server-registered blocks for the block editor. 2222 2152 * -
trunk/src/wp-includes/post.php
r53547 r53559 8107 8107 return $previous_status; 8108 8108 } 8109 8110 /** 8111 * Returns whether the post can be edited in the block editor. 8112 * 8113 * @since 5.0.0 8114 * @since 6.1.0 Moved to wp-includes from wp-admin. 8115 * 8116 * @param int|WP_Post $post Post ID or WP_Post object. 8117 * @return bool Whether the post can be edited in the block editor. 8118 */ 8119 function use_block_editor_for_post( $post ) { 8120 $post = get_post( $post ); 8121 8122 if ( ! $post ) { 8123 return false; 8124 } 8125 8126 // We're in the meta box loader, so don't use the block editor. 8127 if ( is_admin() && isset( $_GET['meta-box-loader'] ) ) { 8128 check_admin_referer( 'meta-box-loader', 'meta-box-loader-nonce' ); 8129 return false; 8130 } 8131 8132 $use_block_editor = use_block_editor_for_post_type( $post->post_type ); 8133 8134 /** 8135 * Filters whether a post is able to be edited in the block editor. 8136 * 8137 * @since 5.0.0 8138 * 8139 * @param bool $use_block_editor Whether the post can be edited or not. 8140 * @param WP_Post $post The post being checked. 8141 */ 8142 return apply_filters( 'use_block_editor_for_post', $use_block_editor, $post ); 8143 } 8144 8145 /** 8146 * Returns whether a post type is compatible with the block editor. 8147 * 8148 * The block editor depends on the REST API, and if the post type is not shown in the 8149 * REST API, then it won't work with the block editor. 8150 * 8151 * @since 5.0.0 8152 * @since 6.1.0 Moved to wp-includes from wp-admin. 8153 * 8154 * @param string $post_type The post type. 8155 * @return bool Whether the post type can be edited with the block editor. 8156 */ 8157 function use_block_editor_for_post_type( $post_type ) { 8158 if ( ! post_type_exists( $post_type ) ) { 8159 return false; 8160 } 8161 8162 if ( ! post_type_supports( $post_type, 'editor' ) ) { 8163 return false; 8164 } 8165 8166 $post_type_object = get_post_type_object( $post_type ); 8167 if ( $post_type_object && ! $post_type_object->show_in_rest ) { 8168 return false; 8169 } 8170 8171 /** 8172 * Filters whether a post is able to be edited in the block editor. 8173 * 8174 * @since 5.0.0 8175 * 8176 * @param bool $use_block_editor Whether the post type can be edited or not. Default true. 8177 * @param string $post_type The post type being checked. 8178 */ 8179 return apply_filters( 'use_block_editor_for_post_type', true, $post_type ); 8180 } -
trunk/tests/phpunit/tests/admin/includesPost.php
r53268 r53559 788 788 789 789 $this->assertSame( $p, post_exists( $title, $content, $date ) ); 790 }791 792 public function test_use_block_editor_for_post() {793 $this->assertFalse( use_block_editor_for_post( -1 ) );794 $bogus_post_id = $this->factory()->post->create(795 array(796 'post_type' => 'bogus',797 )798 );799 $this->assertFalse( use_block_editor_for_post( $bogus_post_id ) );800 801 register_post_type(802 'restless',803 array(804 'show_in_rest' => false,805 )806 );807 $restless_post_id = $this->factory()->post->create(808 array(809 'post_type' => 'restless',810 )811 );812 $this->assertFalse( use_block_editor_for_post( $restless_post_id ) );813 814 $generic_post_id = $this->factory()->post->create();815 816 add_filter( 'use_block_editor_for_post', '__return_false' );817 $this->assertFalse( use_block_editor_for_post( $generic_post_id ) );818 remove_filter( 'use_block_editor_for_post', '__return_false' );819 820 add_filter( 'use_block_editor_for_post', '__return_true' );821 $this->assertTrue( use_block_editor_for_post( $restless_post_id ) );822 remove_filter( 'use_block_editor_for_post', '__return_true' );823 790 } 824 791 -
trunk/tests/phpunit/tests/post.php
r53238 r53559 1845 1845 $this->assertSameSets( array( 1, 2, 2 ), get_option( 'sticky_posts' ) ); 1846 1846 } 1847 1848 /** 1849 * Check if post supports block editor. 1850 * 1851 * @ticket 51819 1852 * @covers ::use_block_editor_for_post 1853 */ 1854 public function test_use_block_editor_for_post() { 1855 $this->assertFalse( use_block_editor_for_post( -1 ) ); 1856 $bogus_post_id = $this->factory()->post->create( 1857 array( 1858 'post_type' => 'bogus', 1859 ) 1860 ); 1861 $this->assertFalse( use_block_editor_for_post( $bogus_post_id ) ); 1862 1863 register_post_type( 1864 'restless', 1865 array( 1866 'show_in_rest' => false, 1867 ) 1868 ); 1869 $restless_post_id = $this->factory()->post->create( 1870 array( 1871 'post_type' => 'restless', 1872 ) 1873 ); 1874 $this->assertFalse( use_block_editor_for_post( $restless_post_id ) ); 1875 1876 $generic_post_id = $this->factory()->post->create(); 1877 1878 add_filter( 'use_block_editor_for_post', '__return_false' ); 1879 $this->assertFalse( use_block_editor_for_post( $generic_post_id ) ); 1880 remove_filter( 'use_block_editor_for_post', '__return_false' ); 1881 1882 add_filter( 'use_block_editor_for_post', '__return_true' ); 1883 $this->assertTrue( use_block_editor_for_post( $restless_post_id ) ); 1884 remove_filter( 'use_block_editor_for_post', '__return_true' ); 1885 } 1847 1886 }
Note: See TracChangeset
for help on using the changeset viewer.