سلام وقت بخیر، من abstract که برای BaseMenu داشتیم رو کمی کامل ترش کردم و اومدم نسبت به نسخه php 8.3 تکمیلش کردم شاید برای سایر دوستان هم به کار بیاد :
<?php
abstract class BaseMenu {
protected string
$page_title,
$menu_title,
$capability = "manage_options",
$menu_slug,
$callback;
protected string|null $icon_url = null;
protected string|bool $sub_menu = false;
protected array $sub_menu_items = [];
protected int|float|null $position = null;
public function __construct() {
add_action( "admin_menu", [ $this, "op_add_menu_page" ] );
}
# template create menu
public function op_add_menu_page(): void {
add_menu_page(
$this->page_title,
$this->menu_title,
$this->capability,
$this->menu_slug,
[ $this, 'index' ],
$this->icon_url,
$this->position
);
}
# for create menu
abstract public function index();
}