amiterandole
  • 0
Учитель

Как создать избранное сообщение в пользовательском типе сообщения?

  • 0

Делаю ли я это точно так же, как и с обычными сообщениями? Я использую глобальную переменную $featured_cat и извлекаю ее. Должен ли я сделать то же самое здесь?

Или мне следует использовать связанную пользовательскую таксономию? Или, может быть, я слишком много думаю об этом? Будет ли действительно польза от таксономии?

Какой здесь правильный подход, ребята?

Share
  1. Можете ли вы отредактировать свой вопрос и уточнить, что такое ваша $global_cat переменная? Идентификатор конкретной категории под названием «Избранное»?

    • 0
  2. Зарегистрируйте тип публикации видео и«Избранная таксономия»«Избранное пользовательское мета-окно выбора

    Тип поста:

    function c3m_reg_vid_post() {
                
                  $labels = array(
                    'name' => _x('Videos', 'post type general name'),
                    'singular_name' => _x('Video', 'post type singular name'),
                    'add_new' => _x('Add New', 'video'),
                    'add_new_item' => __('Add New Video'),
                    'edit_item' => __('Edit Video'),
                    'new_item' => __('New Video'),
                    'view_item' => __('View Video'),
                    'search_items' => __('Search Videos'),
                    'not_found' =>  __('No videos found'),
                    'not_found_in_trash' => __('No videos found in Trash'), 
                    'parent_item_colon' => ''
                  );
                  $args = array(
                    'labels' => $labels,
                    'public' => true,
                    'publicly_queryable' => true,
                    'show_ui' => true, 
                    'query_var' => true,
                    'show_in_nav_menus' => true,
                    'can_export' => true,
                    'rewrite' => array('slug' => 'video', 'with_front' => false),
                    'capability_type' => 'post',
                    'register_meta_box_cb' => 'c3m_video_meta', //This is for our custom meta box
                    'hierarchical' => false,
                    'menu_position' => 10,
                   'taxonomies' => array('featured'),
                    'supports' => array('title', 'editor' 'custom-fields')
                  ); 
                  register_post_type('video', $args );
    }
    

    ###Таксономия

    Если подумать, давайте использовать настраиваемое поле для поста с избранным видео и создадим настраиваемое мета-поле с раскрывающимся списком, чтобы выбрать, будет ли этот пост показан.

    Настройте пользовательский метабокс:

    //hook to add a meta box
    add_action( 'add_meta_boxes', 'c3m_video_meta' );
    
    function c3m_video_meta() {
        //create a custom meta box
        add_meta_box( 'c3m-meta', 'Featured Video Selector', 'c3m_mbe_function', 'video', 'normal', 'high' );
    }
    
    function c3m_mbe_function( $post ) {
    
        //retrieve the meta data values if they exist
        $c3m_mbe_featured = get_post_meta( $post->ID, '_c3m_mbe_featured', true );
    
        echo 'Select yes below to make video featured';
        ?>
        <p>Featured: 
        <select name="c3m_mbe_featured">
            <option value="No" <?php selected( $c3m_mbe_featured, 'no' ); ?>>No Way</option>
            <option value="Yes" <?php selected( $c3m_mbe_featured, 'yes' ); ?>>Sure Feature This Video</option>
        </select>
        </p>
        <?php
    }
    
    //hook to save the meta box data
    add_action( 'save_post', 'c3m_mbe_save_meta' );
    function c3m_mbe_save_meta( $post_ID ) {
        global $post;
        if( $post->post_type == "video" ) {
            if ( isset( $_POST ) ) {
                update_post_meta( $post_ID, '_c3m_mbe_featured', strip_tags( $_POST['c3m_mbe_featured'] ) );
            }
        }
    }
    
    }
    

    Вот только что созданный нами классный селектор видеопостов с небольшими возможностями:введите описание изображения здесь

    Теперь давайте запросим представленные видеопосты:

    $args = array(
        'post_type' => 'video',
        'meta_query' => array(
            array(
                'key' => 'c3m_mbe_featured',
                'value' => 'yes',
                'compare' => 'NOT LIKE'
            )
        )
     );
    $query = new WP_Query( $args );
    
    • 0
  3. Как и в случае с любым другим типом сообщений, на самом деле… используйте категорию… или любой другой метод, который вы предпочитаете (тег, пользовательская таксономия, настраиваемые метаданные/поле,…).

    • 0

Оставить ответ

You must login to add an answer.