Support » Allgemeine Fragen » Neues Klassenobjekt innerhalb eins WordPress Seitemtemplates erstellen

  • Ich habe eine Frage. Und zwar gibt es unter WordPress ja eigene Seitentemplates. Ich habe mir so ein Template nun erstellt:

    <?php
    /**
     * Template Name: Ticket
     */
    
    defined( 'ABSPATH' ) || exit;
    
    new Test( $post->ID );

    Mein Plan ist es, in diesem Template eine neue Instanz / Objekt meiner Klasse zu erstellen und dort die Post ID an den Constructor zu übergeben. In meiner Klasse will ich mehrere AJAX Funktionen definieren und die Post ID dort verwenden, was jedoch leider nicht klappt. Wahrscheinlich werden die AJAX Funktionen zu spät gesetzt?

    
    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 );
    	}
    }

    Ich erhoffe mir dadurch eine schlauere Lösung, als jedes mal die ID im Request über HTML und JS zu schleifen. Wenn ich meine Klasse direkt in meiner functions.php aufrufe, funktioniert es scheinbar, aber ohne ID, welche logischerweise nicht in der functions.php verfügbar ist.

    Hat jemand eine Idee, wie ich das (besser) lösen kann?

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Templates sind für die Ausgabe des Beitrags-Inhalts zuständig und sollten nur Funktionen enthalten, die unmittelbar mit der Ausgabe zusammenhängen.

    Wenn du bei Aufruf einer bestimmten Seite eine Funktion ausführen möchtest, solltest du das (sofern es überhaupt die Gestaltung betrifft – sonst ist ein eigenes Plugin besser geeignet) in die functions.php des Themes packen. Dort kannst du ein Conditional Tag (z.B. is_page( 'Ticket' )) verwenden, um die Funktion nur für diese Seite auszuführen.

    Ansonsten kann ich den aus dem Zusammenhang gerissenen Code nicht beurteilen. Alerdings wärst du vermutlich auch mit deiner Frage bei Stackexchange besser aufgehoben, als in einem Anwendungs-Support-Forum.

    @pixolin Danke für den Tipp! Kann ich dann trotzdem auf die Post ID zugreifen?

    Mach doch ein var_dump( $post )? 🙂

    Gute Idee 🙂

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Das Thema „Neues Klassenobjekt innerhalb eins WordPress Seitemtemplates erstellen“ ist für neue Antworten geschlossen.