Замяна на заглавието на публикация с персонализирана таксономия в wordpress

Използвайки филтри/кукички, как бих заменил заглавието на публикация в wordpress с какъвто и термин да е избран от персонализирана таксономия.

Надяваме се, че приложеното изображение ще обясни какво се опитвам да направя.

въведете описание на изображението тук

Да кажем, че съм избрал „Powerchrono“ – бих искал заглавието на публикацията да бъде заменено с избрания термин и той да е родител.

Всяка помощ ще бъде много ценена.

Очевидно бих искал URL адресът на публикацията също да бъде актуализиран.


person Nick    schedule 22.10.2012    source източник


Отговори (1)


Не мога да гарантирам, че това ще работи направо от портата, тъй като не е тествано. Но това трябва да ви помогне да започнете:

functions.php

<?php
add_action('save_post', 'update_term_title');
function update_term_title($post_id)
{
    if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) 
        return;
    if(!current_user_can('edit_post', $post_id))
        return;

    //Replace 'manufacturer' with whatever your custom taxonomy slug is
    $terms = wp_get_post_terms($post_id, 'manufacturer');

    if(empty($terms))
        return;

    $title = false;
    foreach($terms as $term)
    {
        if($term->parent)
        {
            $parent = get_term($term->parent, 'manufacturer');
            $title = $term->name.' '.$parent->name;
            break;
        }
    }
    /*Default to first selected term name if no children were found*/
    $title = $title ? $title : $terms[0]->name;

    /*We must disable this hook and reenable from within
    if we don't want to get caught in a loop*/
    remove_action('save_post', 'update_term_title');
    $update = array(
        'ID'=>$post_id,
        'post_name'=>sanitize_title_with_dashes($title),
        'post_title'=>$title
    );
    wp_update_post($update);
    add_action('save_post', 'update_term_title');
}
?>
person maiorano84    schedule 22.10.2012
comment
Еха! Ами извън кутията работи почти 100% - единственият проблем, който имам, е, че по някаква причина не използва родителския термин в заглавието. Щракнах върху PowerChrono и заглавието на публикацията е „PowerChrono“ - не „Accurist PowerChrono“. - person Nick; 22.10.2012
comment
Трябваше ли да промените таксономичния плужек там, където го маркирах в коментарите си? Ако е така, променихте ли го и там, където беше зададен $parent? - person maiorano84; 22.10.2012
comment
Поправих го, просто смених "производител" на "производители". Работи като удоволствие, благодаря за помощта. - person Nick; 22.10.2012
comment
Точно това, което търсих от часове, благодаря - person bilcker; 03.09.2014