Возможно Ли Иметь Общие Пользовательские Типы Записей Wordpress?


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

У меня есть пользовательский тип публикации художников, однако на главной странице также есть карусель с художниками, но для отображения другой информации. Итак, у меня есть пользовательский тип записи "карусель домашней страницы", в который я должен ввести имена и информация об исполнителях, а также изображение, а также пользовательский тип записи "художники" с некоторыми из тех же сведений, введенных повторно.

Клиенту, вероятно, не понравится необходимость постоянно вводить одну и ту же информацию в несколько пользовательских типов записей, возможно ли сделать тип записи наследуемым от другого?

Таким образом, я могу указать, что мой тип записи "карусель на домашней странице" наследуется от типа записи "Художники", чтобы информация о художнике была общедоступной и не требовала повторного ввода опять?

В настоящее время я создал пользовательскую таксономию под названием "художники" и ввел все возможные имена художников, а затем, например, в типе записи "карусель домашней страницы" я выбираю художника в правой части как категорию. В некотором смысле это работает хорошо, однако вам все равно нужно ввести заголовок, иначе вы получите какую-то бессмыслицу "Автосохранения", сохраняемую в качестве заголовка, что затруднит редактирование и сортировку по ходу. Возможно, есть способ установить название в качестве категории "художник" что было выбрано?

Дайте мне знать, если вы не совсем понимаете, и я постараюсь рассказать немного подробнее. Я в основном хочу поделиться централизованным списком исполнителей и информацией, которую я могу унаследовать от других типов сообщений.

* Обновление *

Немного подробнее о моем первоначальном вопросе.

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

Тип публикации: исполнители
Поля: Заголовок, Редактор Wysiwyg, Рекомендуемое изображение, URL-адрес Facebook, Имя пользователя Twitter, URL-адрес Веб-Сайта.

Тип записи: домашняя страница_карусель
Поля: Название, Ссылка для получения дополнительной информации, Ссылка на покупку компакт-диска, Ссылка на покупку MP3 Элемент карусели соответствует художнику, определенному в типе публикации "Художники" выше. Таким образом, возможность связать этот тип публикации с типом публикации художников - это то, что я хотеть.

Тип публикации: видео
Поля : Название, Код встраивания видео (455 пикселей), Код встраивания видео (466 пикселей), Код встраивания видео (608 пикселей), Описание видео. Элемент видео соответствует исполнителю, определенному в типе публикации "Исполнители". Я хочу иметь возможность назначить видео исполнителю.

Как вы можете видеть, я хочу в основном установить отношения "многие к одному" или это отношения "один ко многим"? Один из них (я думаю). Я начал возиться с этим плагином: http://wordpress.org/extend/plugins/posts-to-posts / - но я еще не совсем понимаю, как его правильно использовать, я думаю, что это то, чего я хочу. Так что, если кто-то использовал это раньше, ваша помощь будет признательна.

Хотя я знаю о пользовательских таксономиях и терминах, я думаю, что то, чего я хочу, выходит далеко за рамки требований, которые я ищу, поскольку я имею дело с несколькими частями информации и просто хочу каким-то образом связать 2 типа сообщений вместе.

Author: Dwayne Charrington, 2011-01-06

3 answers

Я, так сказать, частично решил свой собственный вопрос. Я уже целую вечность пытаюсь наладить отношения между типами сообщений и типами сообщений, связанными с плагинами, как указано в моем комментарии к ответу Кристофера. Он далек от совершенства, но я придумал, как получить этот плагин: http://wordpress.org/extend/plugins/relation-post-types / - работает (хотя и не так красиво).

Следующий код выведет элемент карусели домашней страницы, а затем имя связанного исполнителя. Это может быть изменено, чтобы также получить мету связанного сообщения. Я хотел использовать плагин Scribu posts 2 posts, но не смог понять, как его использовать.

$carousels = get_posts(array('post_type' => 'homepage_carousel'));  
$counter   = count($carousels);
$increment = 0;
foreach($carousels as $carousel):
    $image = wp_get_attachment_image_src( get_post_thumbnail_id( $carousel->ID ), 'large' );
    $related_ids = rpt_get_object_relation($carousel->ID, array('artists'));
    foreach ($related_ids as $related_id) {
        $related_post[] = get_post($related_id);   
    }
<li style="background: transparent url(<?php echo $image[0]; ?>) no-repeat;">
<div class="carousel_content">
    <p class="large_heading"><?php echo $related_post[$increment]->post_title; ?></p>
    <p class="carousel_meta">
        <?php if (get_post_meta($carousel->ID, 'learn_more_link', true)): ?>
            <?php $link = true; ?>
            <a href="<?php echo get_post_meta($carousel->ID, 'learn_more_link', true); ?>">Learn More</a>
        <?php endif; ?>
        <?php if (get_post_meta($carousel->ID, 'buy_cd_link', true)): ?>
            <?php $link2 = true;  ?>
            <?php if ($link): ?> | <?php endif; ?>
            <a href="<?php echo get_post_meta($carousel->ID, 'buy_cd_link', true); ?>">Buy CD</a>
        <?php endif; ?>
        <?php if (get_post_meta($carousel->ID, 'buy_mp3_link', true)): ?> 
        <?php if ($link2 || $link): ?> | <?php endif; ?><a href="<?php echo get_post_meta($carousel->ID, 'buy_mp3_link', true); ?>">Buy MP3</a>
        <?php endif; ?>
        </p>
</div> 

Как вы можете видеть, это очень банальное и ни в коем случае не окончательное решение. Это сработало для меня, но я все еще недоволен тем, как работает приведенный выше код. Чтобы получить связанную мету сообщения, потребуется больше кода.

Поскольку ответа нет, возможно, это должно стать вики-страницей больше, чем вопросом, возможно? Поскольку перечисленные здесь решения не всегда будут будьте в курсе событий, так как Wordpress постоянно развивается и выпускаются новые плагины.

 2
Author: Dwayne Charrington, 2011-01-09 04:49:45

Привет@Дуэйн:

На самом деле вы не можете "поделиться" типом записи; у каждой записи есть один тип.

Но меня больше беспокоит, может быть, выбранная вами архитектура 'homepage_carousel' неверна и, следовательно, приводит вас ко всевозможным головоломкам, таким как желание поделиться типами сообщений. Можете ли вы более подробно описать, что содержит 'homepage_carousel'?

На первый взгляд это звучит как классический случай необходимости таксономии для вашего post_type='artist', называемого "Рекомендуемые местоположения" (возможно) и вы используете тег "Карусель домашней страницы?"

Если вы можете обновить свой вопрос, чтобы сообщить мне, почему это не сработает, тогда я могу помочь вам больше. Из этого если получится, то здорово!

 1
Author: MikeSchinkel, 2011-01-06 09:17:13

Пользовательские типы сообщений и таксономии тоже сбивают меня с толку, но я думаю, что Майк получил ваш ответ с его предложением использовать таксономии здесь.

Карусель - это не тип контента, который вы хотите добавить в базу данных, это контент в базе данных, который вы хотите представить. В этом случае вашим ответом будет запрос, который ищет альбомы исполнителя (пользовательский тип и таксономия) (пользовательский тип) с пользовательскими полями (подробнее, купить компакт-диск, купить mp3) с "рекомендуемым местоположением" таксономия.

Хотелось бы услышать мнение других по этому поводу, поскольку пользовательские типы сообщений и таксономии остаются одной из вещей, которые я нахожу наиболее запутанными. В частности, я не уверен, как решить, что художник является как пользовательским типом записи, так и таксономией, что, на мой взгляд, необходимо для того, чтобы разрешить дополнительную мету, которую вы хотите, а также взаимосвязи с другими данными.

Что касается видео, возможно, вы захотите посмотреть постформаты, которые появятся в 3.1, чтобы вам не понадобилось отдельное встраивание коды для каждого размера, просто другой атрибут отображения.

Я надеюсь, что это поможет вам или, по крайней мере, продвинет разговор.

Ура!

 0
Author: Christopher, 2011-01-06 20:23:25