Я в недоумении с этим. Вы видите что-то неправильное в приведенном ниже коде, относящемся к флажкам noindex и nofollow? Метабокс отлично рисуется на экране, но значения не сохраняются.
Код для пользовательского заголовка страницы и пользовательского отрывка работает нормально.
// ===================
// = 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('post_header', 'Custom Post Header Code (optional)', 'custom_post_images', 'post', 'normal', 'low');
add_meta_box('post_title', 'Custom Post Title', 'custom_post_title', 'post', 'normal', 'high');
add_meta_box('post_title_page', 'Custom Post Title', 'custom_post_title_page', 'page', 'normal', 'high');
add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', 'page', 'normal', 'core');
add_meta_box('categorydiv', __('Page Index Options'), 'post_categories_meta_box_modified', 'page', 'side', 'high');
}
}
//Adds the custom images box
function custom_post_images() {
global $post;
?>
<div class="inside">
<textarea style="height:70px; width:100%;margin-left:-5px;" name="cb2_customHeader" id="cb2_customHeader"><?php echo get_post_meta($post->ID, 'cb2_customHeader', true); ?></textarea>
<p>Enter your custom html code here for the post page header/image area. Whatever you enter here will override the default post header or image listing <b>for this post only</b>. You can enter image references like so <img src='wp-content/uploads/product1.jpg' />. To show default images, just leave this field empty</p>
</div>
<?php
}
//Adds the custom post title box to posts
function custom_post_title() {
global $post;
?>
<div class="inside">
<p><input style="height:25px;width:100%;margin-left:-10px;" type="text" name="cb2_customTitle" id="cb2_customTitle" value="<?php echo get_post_meta($post->ID, 'cb2_customTitle', true); ?>"></p>
<p>Enter your custom Post Title here and it will be used for the html <title> for this post page and the Google link text used for this page.</p>
</div>
<?php
}
//Adds the custom post title box to pages
function custom_post_title_page() {
global $post;
?>
<div class="inside">
<p><input style="height:25px;width:100%;margin-left:-10px;" type="text" name="cb2_customTitle" id="cb2_customTitle" value="<?php echo get_post_meta($post->ID, 'cb2_customTitle', true); ?>"></p>
<p>Enter your custom Page Title here and it will be used for the html <title> for this page and the Google link text used for this page.</p>
</div>
<?php
}
//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'";}
?>
<div id="categories-all" class="ui-tabs-panel">
<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
<li id='category-<?php echo $noindexCat ?>' class="popular-category"><label class="selectit"><input value="<?php echo $noindexCat ?>" type="checkbox" name="post_category[]" id="in-category-<?php echo $noindexCat ?>"<?php echo $noindexChecked ?> /> noindex</label></li>
<li id='category-<?php echo $nofollowCat ?>' class="popular-category"><label class="selectit"><input value="<?php echo $nofollowCat ?>" type="checkbox" name="post_category[]" id="in-category-<?php echo $nofollowCat ?>"<?php echo $nofollowChecked ?> /> nofollow</label></li>
<li id='category-1' class="popular-category" style="display:none;"><label class="selectit"><input value="1" type="checkbox" name="post_category[]" id="in-category-1" checked="checked"/> Uncategorized</label></li>
</ul>
</div>
<?php
}
add_action('save_post', 'custom_add_save');
function custom_add_save($postID){
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return $postID;
}
else
{
// called after a post or page is saved
if($parent_id = wp_is_post_revision($postID))
{
$postID = $parent_id;
}
if ($_POST['cb2_customHeader'])
{
update_custom_meta($postID, $_POST['cb2_customHeader'], 'cb2_customHeader');
}
else
{
update_custom_meta($postID, '', 'cb2_customHeader');
}
if ($_POST['cb2_customTitle'])
{
update_custom_meta($postID, $_POST['cb2_customTitle'], 'cb2_customTitle');
}
else
{
update_custom_meta($postID, '', 'cb2_customTitle');
}
}
}
function update_custom_meta($postID, $newvalue, $field_name) {
update_post_meta($postID, $field_name, $newvalue);
}
Могу ли я правильно предположить, что вы не предоставили весь код, в частности код, создающий метабокс? Это может помочь. Кроме того, поскольку реальная ценность StackExchange заключается в создании хранилища ответов на вопросы, чтобы другие могли учиться в будущем, приложите дополнительные усилия для создания заголовков, которые действительно что-то значат для тех, кто может столкнуться с той же проблемой, что и вы.
Нет проблем, постараемся сделать так, чтобы заголовки соответствовали необходимому решению, чтобы люди, гуглящие в будущем, с большей вероятностью их находили.
Спасибо, Майк, категории есть, но они дети некатегоризированного кота. Должно ли это иметь значение?
Итак, у вас есть «Без категории> nofollow» и «Без категории> noindex»? Да, у меня все работает. Может у вас есть что-то еще, что мешает? Другой плагин или другой пользовательский код? (Кстати, просто любопытно, удалили ли вы метабокс категорий, и если да, то как вы это сделали? Может быть более одного способа, поэтому мне просто любопытно.)
@Mike> Это в редакторе «PAGE», поэтому там нет мета-поля категорий. Именно поэтому я добавляю мета-бокс для этой цели. Это отлично работает, когда я добавляю noindex или nofollow к сообщению, используя виджет категорий по умолчанию.
@ Скотт Ах.. ( Дох ! 🙂 Вы знаете, что можете добавить метабокс категорий на страницы, если они вам нужны. Будет ли это работать лучше? Если да, задайте этот конкретный вопрос, и я или кто-то другой покажу вам, как…
@Scott Я также понимаю, что они все еще не сохраняют?
Я не уверен, но я думаю, что простой ответ заключается в том , что вы еще не добавили категории
"noindex"
и"nofollow"
категории на свой сайт. Зайди на страницу категорий в админке и добавь их и тут думаю твой код сработает, у меня так получилось:Конечно, если вам нужно добавить эти категории программно, в идеале для использования при активации плагина, чтобы его нужно было запускать только при первой активации плагина, вы можете использовать следующий код:
ОБНОВИТЬ:
@Scott B : Возможно ли, что вы никогда не связывали
category
таксономию сpage
типом сообщения? Вы знаете, что страницы (post_type='page'
) по умолчанию не имеют категорий, верно? Где-то в вашем коде вам нужно запуститьregister_taxonomy_for_object_type()
; я думаю, у вас нет?Если я прав, то добавление этого в ваш код почти наверняка решит вашу проблему:
Хм, может быть, это совсем далеко, но вы не сохраняете значения флажков в своем крюке для сохранения, не так ли?
Кстати: обновление будет создано, если не существует. поэтому нет необходимости в if в этой функции. в конце концов, нет необходимости во вспомогательной функции. меньшая сложность, вероятно, облегчит решение вашей проблемы.