Архив

Как реализовать работу с архивом в обычном смысле этого слова? Для примера, на сайте публикуются посты – объявления. В том случае когда объявления становятся не актуальными (продано), то пост должен перемещаться в Архив. Единственное предположение по этому поводу – использовать произвольное поле для этого и выводить в Архиве посты с учетом значения данного поля. Готовых решений не встречал.

8 Комментарии

  1. В том случае когда объявления становятся не актуальными (продано), то пост должен перемещаться в Архив.

    Архив – это что? Категория, метка, формат записи? Думаю, что определившись с этим, вы и найдете решение.

  2. Архив – это архив.
    Не категория потому, что товар даже после продажи должен относиться к тем же рубрикам для удобного поиска. (Пример: запись Acer TravelMate 5744Z-P622G32Mikk относиться к двум рубрикам: Acer и Ноутбуки)
    Думаю также что архив – это не тег.
    Это что-то вроде состояния записи – типа опубликовано, на рассмотрение, черновик, архив..

    • То есть запись, помещенная в архив, должна исчезать с сайта, но оставаться доступной для администратора?

  3. нет, она должна исчезать с главной страницы, из рубрик. Но если мы зашли в архив (тут также должна присутствовать структура рубрик), она должна быть там видна.

    • А кто должен определять, отправлять пост в архив или нет? Администратор? Если он, то то, что вы хотите, можно легко сделать с помощью категории “Архив”, посты из которой можно запретить отображать везде, кроме своей страницы.

  4. Да, Администратор. Для него, по моей идее должна быть видна ссылка “В Архив” (типа “Редактировать”). Продал товар физически, клацнул по ссылке “В Архив”, и пост больше не отображается нигде кроме “Архива”.

    можно легко сделать с помощью категории “Архив”, посты из которой можно запретить отображать везде, кроме своей страницы.

    А такое возможно, чтобы пост относился к нескольким категориям (Архив, Ноутбуки, Асер) а отображался только в одно из них?

    Я имею ввиду, что заходя в Архив я должен видеть др. рубрики
    (“Ноутбуки |-> Асер”), а не все подряд посты помещенные в Архив.

  5. Решение найдено.
    Использовал плагин Archive, который добавляет пользовательский тип записи archiv. Любую страницу, запись можно перевести в Архив из админки. Для того, чтобы это можно было сделать с фронтэнда использовал следующие функции:
    в functions.php

    		
    function add_archive_link() {
    			global $post;
                $textdomain = 'archive';
                $link = '';
    			$post_type_object = get_post_type_object( $post->post_type );
    			if ( current_user_can( $post_type_object->cap->delete_post, $post->ID ) ) {			
        			$link = 'ID ) 
        				. '" title="'
        				. esc_attr( __( 'Переместить в Архив' ) ) 
        				. '">' . __( 'в Архив' ) . '';
                }
                echo $link;
    }
    
    function get_archive_post_link( $id = 0 ) {			
    			if ( ! $post = &get_post( $id ) )
    				return;
    			$post_type_object = get_post_type_object( $post->post_type );
    			if ( ! $post_type_object )
    				return;		
    			if ( ! current_user_can( $post_type_object->cap->delete_post, $post->ID ) )
    				return;			
    			$action = NULL;
    			$archive_link = admin_url( 'admin.php?post=' . $post->ID . '&action=archive' );
    			return apply_filters('get_archive_post_link', wp_nonce_url( $archive_link, "$action-{$post->post_type}_{$post->ID}" ), $post->ID);
    }
     

    применил в single.php

    < ?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    	
    ... < ?php if(function_exists('add_archive_link')) add_archive_link(); ?>
    < ?php endwhile; endif; ?>

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*