Ежовый угол

Сеть, Рунет, телеком, Иркутск

Простое добавление категорий в WP

После того, как подружил Semagic и WP, мне показалось очень неудобным то, что категории надо обязательно заранее добавлять через админ панель. Имхо, очень удобно сделано в LJ — можно писать все ключевые слова, а если их нет, то они добавляются автоматически.

Решил и тут так сделать. Готового решения не нашел, поэтому писал сам. 🙂 Редактируем файл wp-includes/functions-post.php. Ищем строку:

$cid = $wpdb->get_var(«SELECT cat_ID FROM $wpdb->categories WHERE cat_name=’$cat_name'»);

После нее добавляем:

if(!($cid)) {
wp_insert_category(array(‘category_nicename’ => $cat_name, ‘cat_name’ => $cat_name, ‘category_description’ => »));
$cid = $wpdb->get_var(«SELECT cat_ID FROM $wpdb->categories WHERE cat_name=’$cat_name'»);
}

Также в самое начало этого файла, сразу после «

function wp_insert_category($catarr) {
global $wpdb;

extract($catarr);

$cat_ID = (int) $cat_ID;

// Are we updating or creating?
if (!empty ($cat_ID))
$update = true;
else
$update = false;

$cat_name = apply_filters(‘pre_category_name’, $cat_name);

if (empty ($category_nicename))
$category_nicename = sanitize_title($cat_name);
else
$category_nicename = sanitize_title($category_nicename);
$category_nicename = apply_filters(‘pre_category_nicename’, $category_nicename);

if (empty ($category_description))
$category_description = »;
$category_description = apply_filters(‘pre_category_description’, $category_description);

$category_parent = (int) $category_parent;
if (empty ($category_parent))
$category_parent = 0;

if (!$update) {
$wpdb->query(«INSERT INTO $wpdb->categories (cat_ID, cat_name, category_nicename, category_description, category_parent) VALUES (‘0’, ‘$cat_name’, ‘$category_nicename’, ‘$category_description’, ‘$category_parent’)»);
$cat_ID = $wpdb->insert_id;
} else {
$wpdb->query («UPDATE $wpdb->categories SET cat_name = ‘$cat_name’, category_nicename = ‘$category_nicename’, category_description = ‘$category_description’, category_parent = ‘$category_parent’ WHERE cat_ID = ‘$cat_ID'»);
}

if ( $category_nicename == » ) {
$category_nicename = sanitize_title($cat_name, $cat_ID );
$wpdb->query( «UPDATE $wpdb->categories SET category_nicename = ‘$category_nicename’ WHERE cat_ID = ‘$cat_ID'» );
}

wp_cache_delete($cat_ID, ‘category’);

if ($update) {
do_action(‘edit_category’, $cat_ID);
} else {
wp_cache_delete(‘all_category_ids’, ‘category’);
do_action(‘create_category’, $cat_ID);
do_action(‘add_category’, $cat_ID);
}

return $cat_ID;
}

Ищем точно такой же кусок (последний) в файле wp-admin/admin-db.php и удаляем или комментируем его.

Все, теперь если вы в Semagic указываете несуществующую категорию, она автоматически добавляется.

Раздел: Без рубрики

Метки: , ,

2 комментария

  1. Огромное спасибо. 🙂 Видимо, стоит задуматься о подключении модуля для публикации новостей на news2 🙂


Оставить комментарий для News2 × Отмена

Реклама

Статистика