Diğer dosyaları php sınıfları çağırıyor

0 Cevap php

Bazı özel yazılan tipleri üzerinde çalışıyorum. Ben ilkini bitirdim ve ben kullanıyordum Metabox kod, diğer, gelecek, özel yazı tipleri (yanı sıra sayfaları, mesaj, vb) tarafından yeniden kullanılabilir anladım. Yani kendi php dosyasında sınıf koymak ve çocuğumun tema functions.php dosyasından dahil. Ben daha önce derslere hiç kullanmadım, ama ben o ben işlevleri için ne olduğunu beri istediğim yerde o sınıf aramak düşündüm. yerine benim post-types.php dosyasından denir ve aşağıdaki hata var:

"Fatal error: Class 'My_meta_box' D bulunamadı: \ helga \ xampp \ htdocs \ plagueround \ wp-content \ themes \ plagueround_new2 \ fonksiyonları \ sonrası types.php hat 73 üzerinde"

Çocuğum temanın functions.php benim sınıf yaşıyor dosyasını dahil ettik:

define('CHILDTHEME_DIRECTORY', get_stylesheet_directory() . '/');
// Meta Box Class - makes meta boxes
require_once(CHILDTHEME_DIRECTORY . 'functions/meta_box_class.php');

Burada benim sınıf bulunuyor

//My Meta Box CLASS
//from: http://www.deluxeblogtips.com/2010/05/howto-meta-box-wordpress.html

class My_meta_box {

        protected $_meta_box;

        // create meta box based on given data
        function __construct($meta_box) {
        $this->_meta_box = $meta_box;
        add_action('admin_menu', array(&$this, 'add'));

        add_action('save_post', array(&$this, 'save'));
    }

    /// Add meta box for multiple post types
    function add() {
        foreach ($this->_meta_box['pages'] as $page) {
            add_meta_box($this->_meta_box['id'], $this->_meta_box['title'], array(&$this, 'show'), $page, $this->_meta_box['context'], $this->_meta_box['priority']);
        }
    }

    // Callback function to show fields in meta box
    function show() {
        global $post;

        // Use nonce for verification
        echo '<input type="hidden" name="mytheme_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />';

        echo '<table class="form-table">';

        foreach ($this->_meta_box['fields'] as $field) {
            // get current post meta data
            $meta = get_post_meta($post->ID, $field['id'], true);

            echo '<tr>',
                    '<th style="width:20%"><label for="', $field['id'], '">', $field['name'], '</label></th>',
                    '<td>';
            switch ($field['type']) {
                case 'text':
                    echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" size="30" style="width:97%" />',
                        '<br />', $field['desc'];
                    break;
                case 'textarea':
                    echo '<textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="4" style="width:97%">', $meta ? $meta : $field['std'], '</textarea>',
                        '<br />', $field['desc'];
                    break;
                case 'select':
                    echo '<select name="', $field['id'], '" id="', $field['id'], '">';
                    foreach ($field['options'] as $option) {
                        echo '<option', $meta == $option ? ' selected="selected"' : '', '>', $option, '</option>';
                    }
                    echo '</select>';
                break;
                case 'select2': //for when value and display text don't match
                                //$options array must be multidimensional with both the 'value' and the 'text' for each option
                                //for example = array( array(text=>text1,value=>value1),array(text=>text2,value=>value2))
                                //then in <option> value = $option['value'] and text = $option['text']
                    echo '<select name="', $field['id'], '" id="', $field['id'], '">';
                    foreach ($field['options'] as $option) {
                        echo '<option value="',$option['value'],'"', $meta == $option['value'] ? ' selected="selected"' : '', '>', $option['desc'], '</option>';
                    }
                    echo '</select>';
                    break;
                case 'radio':
                    foreach ($field['options'] as $option) {
                        echo '<input type="radio" name="', $field['id'], '" value="', $option['value'], '"', $meta == $option['value'] ? ' checked="checked"' : '', ' />', $option['name'];
                    }
                    break;
                case 'checkbox':
                    echo '<input type="checkbox" name="', $field['id'], '" id="', $field['id'], '"', $meta ? ' checked="checked"' : '', ' />';
                    break;
            }
            echo    '<td>',
                '</tr>';
        }

        echo '</table>';
    }

    // Save data from meta box
    function save($post_id) {
        // verify nonce
        if (!wp_verify_nonce($_POST['mytheme_meta_box_nonce'], basename(__FILE__))) {
            return $post_id;
        }

        // check autosave
        if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
            return $post_id;
        }

        // check permissions
        if ('page' == $_POST['post_type']) {
            if (!current_user_can('edit_page', $post_id)) {
                return $post_id;
            }
        } elseif (!current_user_can('edit_post', $post_id)) {
            return $post_id;
        }

        foreach ($this->_meta_box['fields'] as $field) {
            $old = get_post_meta($post_id, $field['id'], true);
            $new = $_POST[$field['id']];

            if ($new && $new != $old) {
                update_post_meta($post_id, $field['id'], $new);
            } elseif ('' == $new && $old) {
                delete_post_meta($post_id, $field['id'], $old);
            }
        }
    }
}

i özel yazı türü için bazı meta kutularını tanımlayan nerede olduğumu o zaman benim post-types.php dosyasında i var:

$prefix = '_events_';
$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;

$events_meta_box = array(
    'id' => 'wpt_events',
    'title' => 'Events Options',
    'pages' => array('events'), // multiple post types possible
    'context' => 'side',
    'priority' => 'low',
    'fields' => array(
        array(
            'name' => 'Headline',
            'desc' => 'Enter the heading you\'d like to appear before the video',
            'id' => $prefix . 'heading1',
            'type' => 'text',
            'std' => ''
        ),

    )

);

$my_box = new My_meta_box($events_meta_box); 

So-nasıl diğer dosyalardan sınıfları başvuru?

Düzenlemeleri / DEVAM

sadece post-types.php (sınıf aramak için çalışırken bir) için Require_once deyimi hareketli çalışmak gibiydi. ama bunun halt i özdevinimli_yükle komut çalıştı

function __autoload($className)
{
        require(CHILDTHEME_DIRECTORY .'functions/class_' . $className . '.php')  ;
}

Ben class_My_meta_box.php ve My_meta_box benim sınıf dosyasını yeniden adlandırıldı nerede sınıfı adıdır

which results in the following errors: Warning: require(D:\helga\xampp\htdocs\plagueround/wp-content/themes/plagueround_new/functions/class_WP_User_Search.php) [function.require]: failed to open stream: No such file or directory in D:\helga\xampp\htdocs\plagueround\wp-content\themes\plagueround_new\functions.php on line 66

Ölümcül hata:) [function.require] (gerektirir: gerekli Başarısız açılış 'D:\helga\xampp\htdocs\plagueround/wp-content/themes/plagueround_new/functions/class_WP_User_Search.php' (Include_pathdaki = 'D:. \ Helga \ xampp \ php \ PEAR') D: \ on line helga \ xampp \ htdocs \ plagueround \ wp-content \ themes \ plagueround_new \ functions.php 66

ben tamamen ne diyor anlamıyorum, ama autoload için bazı varsayılan wordpress sınıf çalışıyor ... ve tabii ki yok nerede dizinde arıyor düşünüyorum.

0 Cevap