Создать новый объект класса внутри шаблона WordPress - PullRequest
0 голосов
/ 22 января 2020

У меня проблема. Мой план состоит в том, чтобы создать новый объект класса в шаблоне WordPress для передачи ему переменной из объекта post:

<?php
/**
 * Template Name: Ticket
 */

defined( 'ABSPATH' ) || exit;

new Test( $post->ID );

Внутри моего класса я определяю действие, которое добавляет функцию AJAX внутри класса:

class Test {
    public function __construct( $ticket_id ) {
        $this->ticket_id = $ticket_id;

        $this->register();
    }
    /**
     * Register all hooks
     */
    public function register(): void {
        add_action( 'wp_ajax_test', array( $this, 'test' ) );
    }
    public function test(): void {
        error_log($this->ticket_id);
    }
}

Проблема в том, что функция AJAX недоступна. Может быть, он добавлен слишком поздно? Потому что, когда я создаю новый объект класса прямо в моем functions.php файле, он работает. В этом случае я не знаю, как получить свой почтовый идентификатор в моем классе.

Спасибо за помощь!

1 Ответ

1 голос
/ 22 января 2020

Перво-наперво:

Имея в виду разделение интересов, вы не должны использовать свой шаблон для регистрации чего-либо. Ваш шаблон должен быть настолько глупым, насколько это возможно, поскольку он предназначен только для визуализации / отображения вещей.

Тем не менее, вы должны вызвать функцию регистрации:

$testClass = new Test( $post->ID );
$testClass->register();

WordPress имеет живой цикл , Я не уверен, что вы можете добавить туда новое действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...