WordPress

tworzenie motywu — błąd krytyczny: nie znaleziono klasy WP_Customize_Image_Control

  • 16 czerwca, 2019
  • 4 min read
tworzenie motywu — błąd krytyczny: nie znaleziono klasy WP_Customize_Image_Control


Używam WAMP w systemie Windows 8.1 64 bity, aby opracować niestandardowy motyw.

W tej chwili otrzymuję następujące błędy podczas próby utworzenia niestandardowej kontrolki za pomocą WP_Customize_Image_Control klasa:

Błąd krytyczny: nieprzechwycony błąd: nie znaleziono klasy „Ivana\Api\Customizer\WP_Customize_Image_Control” w C:\wamp64\www\ivana-5.2\wp-content\themes\ivana\inc\Api\Customizer\FeaturedCategories.php w linii 115

Błąd: nie znaleziono klasy „Ivana\Api\Customizer\WP_Customize_Image_Control” w C:\wamp64\www\ivana-5.2\wp-content\themes\ivana\inc\Api\Customizer\FeaturedCategories.php w linii 115

Używam projektu zorientowanego obiektowo, pobranego z tego motywu startowego:

inc/Api/Customizer.php przestrzeń nazw Ivana\Api;

class Customizer
{
    public function register()
    {
        add_action( 'customize_register', [ $this, 'setup' ] );
    }

    public function get_classes()
    {
        return [
            Customizer\FeaturedCategories::class
        ];
    }

    public function setup( $wp_customize )
    {
        foreach ( $this->get_classes() as $class )
        {

            if ( method_exists( $class, 'register' ) )
            {
                $service = new $class;

                $service->register( $wp_customize );
            }
        }
    }
}

inc/Api/Customizer/FeaturedCategories.php

namespace Ivana\Api\Customizer;

use Ivana\Helpers;

class FeaturedCategories
{
    public function register( $wp_customize )
    {
        $this->add_panels( $wp_customize );
        $this->add_sections( $wp_customize );
        $this->add_settings( $wp_customize );
        $this->add_controls( $wp_customize );
    }

    private function add_panels( $wp_customize )
    {
        $wp_customize->add_panel( 'featured_categories', [
            'title' => 'Featured Categories',
            'description' => 'I\'m looking for a good placeholder',
            'priority' => 100
        ] );
    }

    private function add_sections( $wp_customize )
    {
        $wp_customize->add_section( 'featured_category_0', [
            'title' => 'Featured Category 1',
            'panel' => 'featured_categories',
            'description' => 'Highlight categories on your front page.'
        ] );

        $wp_customize->add_section( 'featured_category_1', [
            'title' => 'Featured Category 2',
            'panel' => 'featured_categories',
            'description' => 'Highlight categories on your front page.'
        ] );

        $wp_customize->add_section( 'featured_category_2', [
            'title' => 'Featured Category 3',
            'panel' => 'featured_categories',
            'description' => 'Highlight categories on your front page.'
        ] );
    }

    private function add_settings( $wp_customize )
    {
        $wp_customize->add_setting( 'category_slug_0', [
            'default' => '',
            'transport' => 'postMessage',
            'sanitize_callback' => 'wp_filter_nohtml_kses'
        ] );

        $wp_customize->add_setting( 'category_slug_1', [
            'default' => '',
            'transport' => 'postMessage',
            'sanitize_callback' => 'wp_filter_nohtml_kses'
        ] );

        $wp_customize->add_setting( 'category_slug_2', [
            'default' => '',
            'transport' => 'postMessage',
            'sanitize_callback' => 'wp_filter_nohtml_kses'
        ] );

        $wp_customize->add_setting( 'category_image_0', [
            'default' => '',
            'transport' => 'postMessage',
            'sanitize_callback' => 'wp_filter_nohtml_kses'
        ] );

        $wp_customize->add_setting( 'category_image_1', [
            'default' => '',
            'transport' => 'postMessage',
            'sanitize_callback' => 'wp_filter_nohtml_kses'
        ] );

        $wp_customize->add_setting( 'category_image_2', [
            'default' => '',
            'transport' => 'postMessage',
            'sanitize_callback' => 'wp_filter_nohtml_kses'
        ] );
    }

    private function add_controls( $wp_customize )
    {
        // var_dump( $wp_customize );
        // echo $wp_customize->registered_control_types;

        $wp_customize->add_control( 'category_slug_2', [
            'section' => 'featured_category_0',
            'label' => 'Category slug',
            // 'description' => 'Not the animal',
            'type' => 'text'
        ] );

        $wp_customize->add_control( 'category_slug_1', [
            'section' => 'featured_category_1',
            'label' => 'Category slug',
            // 'description' => 'Not the animal',
            'type' => 'text'
        ] );

        $wp_customize->add_control( 'category_slug_0', [
            'section' => 'featured_category_2',
            'label' => 'Category slug',
            // 'description' => 'Not the animal',
            'type' => 'text'
        ] );

        $wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, 'category_image_2', [
            'section' => 'featured_category_0',
            'label' => 'Featured Category Image 1'
        ] ) );
    }
}

Dlaczego WordPress nie może znaleźć pliku WP_Customize_Image_Control klasa lub którakolwiek z tych klas, jeśli o to chodzi? (Próbowałem również z kolorem i mediami bez powodzenia).

Warto przeczytać!  wp query — WP_query z filtrem ajax nie działa z polami wejściowymi

Jeśli widzisz Customizer.php, metoda register wywołuje metodę 'customize_register' akcja, a konfiguracja odbiera $wp_customize.

Działa to doskonale, jeśli nie próbujesz użyć niestandardowych elementów sterujących.


Źródło