admin管理员组

文章数量:1122832

I’m on WordPress 5 beta 4, the problem is that meta boxes can not hide them when selecting a specific template chosen by page attributes. To make them appear or hide, you have to update the browser page or exit the created page and re-enter it. This is not very nice for users. This is my code:

<?php
function willer_custom_meta_portfolio_standar() {
    global $post;

    if(!empty($post))
    {
        $pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);
        if($pageTemplate == 'template-pages/page-portfolio-standar.php' )
        {
            add_meta_box(
                'page-portfolio-standar-meta-box', // $id
                esc_html__('Customize Portfolio Standar','willer'), // $title
                'willer_portfolio_standar_meta_callback', // $callback
                'page', // $page
                'normal', // $context
                'high'); // $priority
            }
        }

    }
    add_action( 'add_meta_boxes', 'willer_custom_meta_portfolio_standar' );
    ?>

The problem also occurs with WordPress 4.9.8 using Gutenberg, using the classic editor the problem is not there. I think it’s because Gutenberg uses Ajax to save the options. Do you have any suggestions to solve the problem? Thank yo

I’m on WordPress 5 beta 4, the problem is that meta boxes can not hide them when selecting a specific template chosen by page attributes. To make them appear or hide, you have to update the browser page or exit the created page and re-enter it. This is not very nice for users. This is my code:

<?php
function willer_custom_meta_portfolio_standar() {
    global $post;

    if(!empty($post))
    {
        $pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);
        if($pageTemplate == 'template-pages/page-portfolio-standar.php' )
        {
            add_meta_box(
                'page-portfolio-standar-meta-box', // $id
                esc_html__('Customize Portfolio Standar','willer'), // $title
                'willer_portfolio_standar_meta_callback', // $callback
                'page', // $page
                'normal', // $context
                'high'); // $priority
            }
        }

    }
    add_action( 'add_meta_boxes', 'willer_custom_meta_portfolio_standar' );
    ?>

The problem also occurs with WordPress 4.9.8 using Gutenberg, using the classic editor the problem is not there. I think it’s because Gutenberg uses Ajax to save the options. Do you have any suggestions to solve the problem? Thank yo

Share Improve this question asked Nov 20, 2018 at 9:27 DenisDenis 494 bronze badges 2
  • Gutenberg is running with React. This won't work properly anymore with PHP. – André Kelling Commented Nov 20, 2018 at 11:14
  • Yes I know that Gutenberg uses React, I was looking for a solution to improve the code of my meta-boxes. Thanks anyway for the help. – Denis Commented Nov 20, 2018 at 11:51
Add a comment  | 

1 Answer 1

Reset to default 0

Here is the answer for Gutenberg editor by Christine Cooper.

Create JS file /js/block-script.js and use the JS function removeEditorPanel() which will completely remove the panel with all its controls:

// remove excerpt panel
wp.data.dispatch( 'core/edit-post').removeEditorPanel( 'post-excerpt' );

Add this to fucntion.php

function cc_gutenberg_register_files() {
    // script file
    wp_register_script(
        'cc-block-script',
        get_stylesheet_directory_uri() .'/js/block-script.js', // adjust the path to the JS file
        array( 'wp-blocks', 'wp-edit-post' )
    );
    // register block editor script
    register_block_type( 'cc/ma-block-files', array(
        'editor_script' => 'cc-block-script'
    ) );

}
add_action( 'init', 'cc_gutenberg_register_files' );

You can find the original answer here: https://wordpress.stackexchange.com/a/339437

本文标签: metaboxShow or hide custom meta box not work with Gutenberg