WordPress 3 verpatzt meine benutzerdefinierten Meta-Box-Werte beim Speichern

Mein Thema enthält Code, der ein benutzerdefiniertes Metabox auf der Seiteneditor-Schnittstelle platziert, um noindex- und / oder nofollow-Attribute auf die Seite umzuschalten.

Es ist ein einfacher, kleiner Deal mit zwei Checkboxen, einer sagt Noindex, der andere sagt Nofollow.

Diese funktionieren einwandfrei in allen Versionen von WP vor 3.0.1

Ich habe festgestellt, dass in 3.0.1 die Werte der Checkboxen nicht gespeichert werden. Egal, was ich mache, sie kommen immer unkontrolliert, und die Werte werden auch nicht an die database weitergegeben (es wird nicht nur in der Schnittstelle unkontrolliert gemeldet, es sendet auch niemals die Werte an die database)

Ich weiß nicht, was anders ist und wie ich meinen Code mit 3.0.1 arbeiten lassen kann

Weiß jemand, was sich geändert haben könnte, damit diese Kontrollkästchenwerte nicht übergeben werden, wenn die Seite in WP 3.0.1 aktualisiert wird?

// =================== // = POST OPTION BOX = // =================== add_action('admin_menu', 'my_post_options_box'); function my_post_options_box() { if ( function_exists('add_meta_box') ) { add_meta_box('categorydiv', __('Page Index Options'), 'post_categories_meta_box_modified', 'page', 'side', 'high'); } } //adds the custom categories box function post_categories_meta_box_modified($post) { global $post, $noindexCat, $nofollowCat; $noindexCat = get_cat_ID('noindex'); $nofollowCat = get_cat_ID('nofollow'); if(in_category("noindex")){ $noindexChecked = " checked='checked'";} if(in_category("nofollow")){ $nofollowChecked = " checked='checked'";} ?> 
    <li id='category-' class="popular-category"> <li id='category-' class="popular-category">
<?php }

Solutions Collecting From Web of "WordPress 3 verpatzt meine benutzerdefinierten Meta-Box-Werte beim Speichern"

Zuallererst verwendet dies kein benutzerdefiniertes Post-Meta … Sie versuchen, Kategorien abzurufen und die Anwesenheit dieser Kategorien zu verwenden, um die Kästchen zu markieren. Ich sehe auch kein Skript, um die Werte zu speichern, sobald Sie darauf geklickt haben … Als das funktionierte, nehme ich an, dass es eine sehr haschische Lösung war, also bin ich nicht überrascht, dass es instabil ist und gebrochen ist.

Sie können jedoch benutzerdefinierte Post-Meta verwenden, um das zu tun, was Sie tun möchten. Verwenden Sie stattdessen das folgende Skript:

 // =================== // = POST OPTION BOX = // =================== add_action('admin_menu', 'my_post_options_box'); function my_post_options_box() { if ( function_exists('add_meta_box') ) { add_meta_box('categorydiv', __('Page Index Options'), 'post_categories_meta_box_modified', 'page', 'side', 'high'); } } //adds the custom categories box function post_categories_meta_box_modified() { global $post; if( get_post_meta($post->ID, '_noIndex', true) ) $noindexChecked = " checked='checked'"; if( get_post_meta($post->ID, '_noFollow', true) ) $nofollowChecked = " checked='checked'"; ?> 
< ?php } function save_post_categories_meta($post_id) { if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id; $noIndex = $_POST['chk_noIndex']; $noFollow = $_POST['chk_noFollow']; update_post_meta( $post_id, '_noIndex', $noIndex ); update_post_meta( $post_id, '_noFollow', $noFollow ); return $post_id; } add_action('save_post', 'save_post_categories_meta');

Dies speichert boolesche Flags in den benutzerdefinierten Post-Meta-Feldern "noIndex" und "noFollow", ruft die Werte dieser Felder ab, die in Ihrer benutzerdefinierten Metabox verwendet werden sollen, und ermöglicht Ihnen den einfachen Zugriff auf sie an anderer Stelle in Ihrer Site. Verwenden get_post_meta( $post->ID, 'meta-name', true ) einfach get_post_meta( $post->ID, 'meta-name', true ) , um sie abzurufen.

Ich möchte auch die Verwendung von WPAlchemy Meta Box (eine PHP-class, die ich erstellt habe) vorschlagen, um Ihre Meta-Boxen zu erstellen …