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.