Зарегистрировать таксономию, связанную с постом - PullRequest
0 голосов
/ 27 сентября 2018

По сути, я пытаюсь закодировать систему рейтинга.

У меня есть Rating и Listing пользовательский тип записи.Что я хочу сделать, это зарегистрировать таксономию на Rating, которая покажет, какой пост оценивается как Listing пользовательский тип поста.Кроме того, я хочу, чтобы Listing смог зарегистрировать таксономию, которая показывает среднее значение всех оценок на этом посту.Я уже искал похожий вопрос и нашел только таксономии, связанные с метабоксом, которые мне не интересны, поскольку я хочу, чтобы пользовательские типы сообщений добавлялись из внешнего интерфейса.

function create_post_type_listing()
{
    register_taxonomy_for_object_type('category', 'makedir-listing'); // Register Taxonomies for Category
    register_taxonomy_for_object_type('post_tag', 'makedir-listing');
    register_post_type('makedir-listing', // Register Custom Post Type
        array(
        'labels' => array(
            'name' => __('Listing Post', 'makedirlisting'),
            'singular_name' => __('Listing Post', 'makedirlisting'),
            'add_new' => __('Add New', 'makedirlisting'),
            'add_new_item' => __('Add New Listing Post', 'makedirlisting'),
            'edit' => __('Edit', 'makedirlisting'),
            'edit_item' => __('Edit Listing Post', 'makedirlisting'),
            'new_item' => __('New Listing Post', 'makedirlisting'),
            'view' => __('View Listing Post', 'makedirlisting'),
            'view_item' => __('View Listing Post', 'makedirlisting'),
            'search_items' => __('Search Listing Post', 'makedirlisting'),
            'not_found' => __('No Listing Posts found', 'makedirlisting'),
            'not_found_in_trash' => __('No Listing Posts found in Trash', 'makedirlisting')
        ),
        'public' => true,
        'hierarchical' => true, // Allows your posts to behave like Hierarchy Pages
        'has_archive' => true,
        'supports' => array(
            'title',
            'editor',
            'thumbnail'
        ),
        'can_export' => true, // Allows export in Tools > Export
        'taxonomies' => array(
            'post_tag',
            'category'
        ) // Add Category and Post Tags support
    ));
    register_taxonomy(
        'rating',
        'makedir-listing',
        array(
            'label' => __( 'Rating' ),
            'rewrite' => array( 'slug' => 'rating' ),
            'hierarchical' => true,
            'show_ui'           => false,
            'show_admin_column' => true
        )
    );
}

function create_post_type_rating()
{
    register_post_type('makedir-rating', // Register Custom Post Type
        array(
        'labels' => array(
            'name' => __('Rating', 'makedirrating'),
            'singular_name' => __('Rating', 'makedirrating'),
            'add_new' => __('Add New', 'makedirrating'),
            'add_new_item' => __('Add New Rating', 'makedirrating'),
            'edit' => __('Edit', 'makedirrating'),
            'edit_item' => __('Edit Rating', 'makedirrating'),
            'new_item' => __('New Rating', 'makedirrating'),
            'view' => __('View Ratings', 'makedirrating'),
            'view_item' => __('View Rating', 'makedirrating'),
            'search_items' => __('Search Rating', 'makedirrating'),
            'not_found' => __('No Ratings found', 'makedirrating'),
            'not_found_in_trash' => __('No Ratings found in Trash', 'makedirlisting')
        ),
        'public' => true,
        'hierarchical' => false, // Allows your posts to behave like Hierarchy Pages
        'has_archive' => false,
        'supports' => array(
            'title',
            'editor',
        ),
        'can_export' => true // Allows export in Tools > Export
    ));
    register_taxonomy(
        'post',
        'makedir-rating',
        array(
            'label' => __( 'Post' ),
            'rewrite' => array( 'slug' => 'post' ),
            'hierarchical' => true,
            'show_ui'           => false,
            'show_admin_column' => true
        )
    );
}

YouМожно увидеть, где я борюсь за реализацию упомянутых функций, в нижней части каждой функции.Надеюсь, я прояснил это достаточно.

1 Ответ

0 голосов
/ 27 сентября 2018

Я не думаю, что таксономии - правильный путь.

Вам лучше добавить настраиваемое поле (попробуйте дополнительные настраиваемые поля / acf, чтобы упростить это https://en -gb.wordpress.org / plugins / advanced-custom-fields / ) Я думаю.Добавьте отношение поста или поле объекта поста к вашему типу поста рейтинга, который затем может ссылаться на листинг.

Затем вы можете написать код для поиска / вычисления любых агрегированных данных - таких как средние значения, количество оценок и т. Д.И, возможно, сохраните / кэшируйте их в настраиваемых полях / мета объекта листинга, если есть проблемы с производительностью.

...