Tipo de postagem personalizado | Erro fatal em register_post_type ()

Estou tentando desenvolver meu primeiro plugin do WordPress usando o OOP seguindo um guia. Eu segui palavra por palavra até agora ainda estou lutando com um problema que não consigo rewrite o que eu imagino que será o URL.

Este é o código que estou usando …

class BookItNow { function __construct() { add_action('init', $this->custom_post_type()); } function activate() { $this->custom_post_type(); flush_rewrite_rules(); } function register() { add_action('admin_enqueue_scripts', array($this, 'enqueue')); } function deactivate() { flush_rewrite_rules(); } function custom_post_type() { register_post_type('bookings', ['public' => true, 'label' => 'Bookings']); } function enqueue() { wp_enqueue_style('style', plugins_url('/assets/style.css', __FILE__)); } } if (class_exists('BookItNow')) { $book = new BookItNow(); $book->register(); } register_activation_hook(__FILE__, array($book, 'activate')); register_deactivation_hook(__FILE__, array($book, 'deactivate')); register_uninstall_hook(__FILE__, array($book, 'uninstall')); 

E este é o erro que eu estou recebendo. Uncaught Error: Call to a member function add_rewrite_tag() on null . Removendo o $this->custom_post_type() remove esse problema, então não tenho ideia. Qualquer ajuda seria apreciada.

Solutions Collecting From Web of "Tipo de postagem personalizado | Erro fatal em register_post_type ()"

experimente estas alterações:

1) Para usar add_action () quando seu plugin ou tema for construído usando classs em vez de passar apenas o nome da function, você precisa passar uma matriz com uma referência para a class ($ this) e a function callable (‘custom_post_type’)

 function __construct() { add_action('init', array( $this, 'custom_post_type' ) ); } 

2) O método ‘ativar’ original chamado ‘custom_post_type’ sugerindo que ele só precisa ser chamado uma vez quando o plugin está ativado. Mas para registrar corretamente o tipo de postagem personalizado, esse método precisa ser chamado sempre que o WordPress é carregado, e é por isso que ele é adicionado ao gancho ‘init’. Ligar no método de ativação realmente não faz sentido, então eu o removi.

 function activate() { flush_rewrite_rules(); }