Я создаю плагин для списка каталогов, используя PHP class
, и метод __construct()
недоступен.
final class ShibbirDirectoryListing
{
/**
* create pages and setup the plugin tables
*
* @since 1.0.0
*/
public function initial_setup()
{
$login_page_title = 'login';
$login_page_content = 'login page content';
$login_page_check = get_page_by_title($login_page_title);
$login_page = array(
'post_type' => 'page',
'post_title' => $login_page_title,
'post_content' => $login_page_content,
'post_status' => 'publish',
'post_author' => 1,
'post_slug' => 'login'
);
if (!isset($login_page_check->ID) && ! $this->is_slug_exists('login')) {
$login_page_id = wp_insert_post($login_page);
}
}
/**
* Check if the page is eixst
*
* @since 1.0.0
*/
public function is_slug_exists($post_name)
{
global $wpdb;
$table_name = $wpdb->prefix . 'posts';
if ($wpdb->get_row("SELECT post_name FROM {$table_name} WHERE post_name = '" . $post_name . "' ", ARRAY_A)) {
return true;
} else {
return false;
}
}
/**
* Main ShibbirDirectoryListing Instance
*
* Ensure only one instance of ShibbirDirectoryListing is loaded
*
* @since 1.0.0
* @static
* @return ShibbirDirectoryListing - Main instance
*/
public static function instance()
{
if (is_null(self::$instance)) {
self::$instance = new self();
self::$instance->setup();
}
return self::$instance;
}
}
/**
* Register plugin settings
*/
register_activation_hook( __FILE__, array( 'ShibbirDirectoryListing', 'initial_setup' ) );
/**
* Get the instance of the plugin
*/
function shibbir_directory_listing()
{
return ShibbirDirectoryListing::instance();
}
// Let's start the Engine
shibbir_directory_listing();
Здесь вы видите, что мне нужно создать несколько страниц на register_activation_hook
и его вызов initial_setup
метода class
.
В initial_setup
методе мне нужно вызвать другой метод с именем is_slug_exists
, но У меня есть ошибка для этого вызова, потому что в то время он еще не находится в контексте класса.
Итак, каков наилучший способ вызова метода is_slug_exists
?
1) Должен ли я использовать код функции is_slug_exists
в * Метод 1025 *?
2) Должен ли я использовать register_activation_hook
в методе __construct
, а затем вызвать метод is_slug_exists
?
3) Если I go с 2) , то действительно ли нужен instance()
stati c метод?
4) ИЛИ я должен вызывать функцию на register_activation_hook
вместо вызова метода класса?