Автоматически назначать категорию всем сообщениям

Как автоматически добавить / назначить категорию ВСЕ должности?

Для блога с 1000 постами о рецептах, как бы вы автоматически добавили категорию «рецепт» ко всем постам? (Без замены текущих категорий, уже назначенных сообщению. Другими словами, каждое сообщение будет по-прежнему сохранять уже назначенные категории, такие как категории «курица», «свинина» и «говядина»).

Я мог бы вручную поставить галочку / пометить категорию «рецепт» в панели управления WordPress, но я ищу альтернативный метод, может быть, какой-нибудь код, который я могу поместить в functions.php?

Если есть метод, который может достичь этого …

Будет ли этот метод добавлять категорию «рецепт» как к новым, так и к старым сообщениям, или просто к новым сообщениям?

Также если у меня уже есть несколько постов в категории «рецепт»
добавит ли этот метод категорию «рецепт» ДВАЖДЫ к сообщению,
поэтому, заставляя этот пост появляться дважды в категории «рецепт»?

0

Решение

Вы можете полностью создать категорию, получить ее идентификатор из URL или базы данных, заглянув в нее. Затем создайте функцию, используйте $ wpdb, напишите запрос MySQL по своему усмотрению, добавив идентификатор, который вы только что получили из URL или базы данных.

Здесь может быть некоторая информация, чтобы помочь вам: http://codex.wordpress.org/Class_Reference/wpdb

Есть 3 или 4 таблицы, которые вы хотите посмотреть в своей базе данных:

wp_posts — поиск столбцов ID и post_type;

wp_terms — ищите term_id и name, чтобы увидеть, какой ID категории является вашим новым, ‘recipe’ в этом случае.

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

и где происходит вся магия:

wp_terms_relationship — где object_id — это идентификатор вашего сообщения, а term_taxonomy_id — это term_taxonomy_id от wp_term_taxonomy.

Осторожный: Не думайте, что term_id от wp_terms та же term_taxonomy_id от wp_term_taxonomy, Для каждого из них есть столбец, и для этого, безусловно, есть веская причина.

Что вы хотите сделать, это вставить здесь, wp_posts.object_id а также wp_term_taxonomy.term_taxonomy_id,


Вы можете запустить что-то вроде:

INSERT INTO wp_term_relationships (object_id, term_taxonomy_id) (SELECT DISTINCT ID, your_new_category_id FROM wp_posts WHERE post_type = "your_post_type")

Замена:

your_new_category_id = вашей новой категорией term_taxonomy_id, из wp_term_taxonomy

your_post_type = между этими кавычками, post_type, если WordPress по умолчанию, заменить на «post»

Например, если у вашей новой категории есть taxonomy_id 7, а ваши сообщения recipe_post:

INSERT IGNORE INTO wp_term_relationships (object_id, term_taxonomy_id) (SELECT DISTINCT ID, 7 FROM wp_posts WHERE post_type = "recipe_post")


«Да, чувак, но OP хочет запустить что-то в functions.php».

Это нормально:

function update_categories(){
global $wpdb;

if ($_GET['updateall'] == 'banana'){
echo "updating";
$wpdb->query("INSERT IGNORE INTO wp_term_relationships (object_id, term_taxonomy_id) (SELECT DISTINCT ID, 7 FROM wp_posts WHERE post_type = 'recipe_post')");
}

}
add_action('wp_loaded', 'update_categories');

Это будет зависать при каждой загрузке WordPress (обычно на каждой странице), проверяя, отправляете ли вы GETЗначение равно тому, что вы хотите запустить, и хотите запустить только один раз. Поэтому замените «банан» чем-то, что вы можете легко запомнить и получить к нему доступ: http://www.yourdomain.com/?updateall=banana

и сделано!

Конечно, удалите этот хук и функцию, как только вы закончите это обновление.


Ваши вопросы:

Будет ли этот метод добавлять категорию «рецепт» как к новым, так и к старым сообщениям, или просто к новым сообщениям?

Ваш звонок, если вы хотите выбрать диапазон сообщений, вы можете добавить WHERE лайк:

WHERE post_type = 'recipe_post' AND something = 'something something' AND date = 'some-good-date'

Кроме того, если у меня уже есть несколько постов в категории «рецепт», добавит ли этот метод категорию «рецепт» ДВАЖДЫ к посту, из-за чего этот пост дважды появится в категории «рецепт»?

Нет поэтому IGNORE ключевое слово сразу после INSERT,

0

Другие решения

Проверь это

http://wordpress-code-snippets.blogspot.in/2014/05/how-to-assing-category-to-post.html

Copy and Paste the Below code in you theme functions.php.

function auto_add_category ($post_id = 0) {
if (!$post_id) return;
$tag_categories = array ( //  add multiple items as shown 'Tag Name' => 'Categroy Name'
'toys' => 'Kids',
'apple' => 'Fruits',
);
$post_tags = get_the_tags($post_id);
foreach ($post_tags as $tag) {
if ($tag_categories[$tag->name] ) {
$cat_id = get_cat_ID($tag_categories[$tag->name]);
if ($cat_id) {
$result =  wp_set_post_terms( $post_id, $tags = $cat_id, $taxonomy = 'category', $append = true );
}
}
}
}
add_action('publish_post','auto_add_category');
?>
0

По вопросам рекламы [email protected]