Eigenes Plugin, dass Posttyp und Meta-Boxen registiert.

  • Hallo,

    ich habe mich seit einigen Tagen mal an die Programmierung eines einen Plugins gemacht. Dieses soll einen eingenen Posttyp "verein" anlegen, sowie eine Metabox anlagen, in der der Ansprechpartner eingetragen wird.
    Ich bin leider noch nicht ganz Fit in der objektorientierten Programmierung..

    // Anmerkung: Das Endprodukt des Plugins habe ich nicht mit Plugins wie ACF hinbekommen, daher mein Eigenversuch - auch um das das mit den eignen Plugins auch mal zu lernen...

    Das Konkrete Problem liegt darin, dass meine Function "add_meta_box()", die entsprechende Callback-Funktion nicht finden kann.

    Der Debugger sagt mir andauernd: "[COLOR=#ff0000]call_user_func() expects parameter 1 to be a valid callback, function 'verein_metabox_ansprechpartner_callback' not found or invalid function name[/COLOR]"

    Ich habe auch schon vor jede function 'public', 'protected' ausprobiert, oder gar nichts von allem.

    Mein Script sie zusammengefasst wie folgt aus:

    [FONT=Courier New]<?php
    // Pluginheader

    $plugin_start = new tp_posttype_verein();

    class tp_posttype_verein {

    public function __construct() {
    add_action( 'init', array( $this, 'register_post_type_vereine' ) );
    add_action( 'add_meta_boxes', array( $this, 'add_verein_metabox_ansprechpartner' ) );
    add_action( 'save_post', array( $this, 'verein_metabox_ansprechpartner_save' ) );
    }

    public function register_post_type_vereine(){

    $labels = array(jede Menge definitionen)

    $args = array(
    'labels' => $labels,
    // und so weiter uns sofort
    );

    register_post_type( 'verein', $args );
    }

    public function add_verein_metabox_ansprechpartner() {
    add_meta_box('verein_metabox_ansprechpartner', __('Ansprechpartner'), '[COLOR=#ff0000]verein_metabox_ansprechpartner_callback[/COLOR]', 'verein', 'normal', 'high');
    }

    public function [COLOR=#ff0000]verein_metabox_ansprechpartner_callback[/COLOR]() {
    echo '<label for="verein_metabox_ansprechpartner_name">Ansprechpartner</label><br />';
    echo '<input type="text" id="verein_metabox_ansprechpartner_name" name="verein_metabox_ansprechpartner_name" value="Test" size="25" />';

    }


    public function verein_metabox_ansprechpartner_save($post_id) {
    // Jede Menge Prüfungen
    if( isset( $_POST['verein_metabox_ansprechpartner_name'] ) ) {
    $ansprechpartner_name = sanitize_text_field( $_POST['verein_metabox_ansprechpartner_name'] );
    add_post_meta( $post_id, '_verein_metabox_ansprechpartner_name', $ansprechpartner_name );
    }

    } // Ende der Class
    [/FONT]
    [FONT=Arial]Könnte mir da wer weiter helfen?[/FONT]

    3 Mal editiert, zuletzt von tommy1989 (7. Januar 2024 um 20:54)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Versuche es mal so?

    Code
    add_meta_box('verein_metabox_ansprechpartner', __('Ansprechpartner'),
    
    
    array( $this, 'verein_metabox_ansprechpartner_callback' ),
    
    
     'verein', 'normal', 'high');
    }


    So wie Du es bei den [FONT=Courier New]add_action[/FONT] gemacht hast.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!