Пользовательский метабокс Wordpress не отображается

Пытаюсь добавить мета-боксы в мою админку и нашел здесь код для их создания. Внес некоторые изменения в код, применил его к моему сайту, и мета-поля вообще не отображаются ни в каких типах сообщений или страниц. Код ниже:

add_action('admin_init');

function admin_init() {
    add_meta_box("credits_meta", "Mixtape Info", "credits_meta", "mixtape", "normal", "low");
}

function credits_meta() {
    global $post;
    $custom = get_post_custom($post->ID);
    $dj = $custom["DJ"][0];
    $embed = $custom["embed code"][0];
    $tracklisting = $custom["tracklisting"][0];
    ?>;
    <label>DJ:</label>
    <input name="DJ" value="<?php echo $dj; ?>"/>
    <p><label>Embed:</label><br />
    <textarea cols="50" rows="5" name="embed code"><?php echo $embed; ?></textarea></p>
    <p&><label>Tracklisting:</label><br />
    <textarea cols="50" rows="5" name="tracklisting"><?php echo $tracklisting; ?></textarea></p>
    <?php 

}

Это что-то очевидное, что я упускаю? Я скопировал и вставил пример в ссылку и получил те же результаты.


person Jay Littles    schedule 09.08.2013    source источник


Ответы (2)


add_action('admin_init'); Это неправильно.

add_action ожидает, что первым аргументом будет хук функции, а вторым аргументом будет функция, которая будет выполняться при вызове хука, например:

add_action('admin_init', 'admin_init');

Но даже это неправильно, потому что вы получите сообщение об ошибке при попытке повторно объявить ранее объявленную функцию, поэтому вместо этого должно быть что-то вроде

add_action('admin_init', 'my_admin_init');

Где my — это пространство имен вашего приложения.

Или используйте классы. Это может существовать в файле с именем my_class.php

class my_class {
    public function my_admin_init(){
        //do work
    }
}

Требовать этот файл в вашем functions.php

require_once('path/to/my_class.php');

Создайте экземпляр класса

$my_class = new my_class;

Теперь вызовите функцию на admin_init

add_action('admin_init', array($my_class, 'my_admin_init'));
person Ohgodwhy    schedule 10.08.2013

Застрял на этом на два дня - исправил проблему, добавив...

wp_nonce_field(basename( FILE), 'your_plugin_name_nonce');

... в мою форму в моем метабоксе.

person Steve    schedule 21.02.2019