Создание страниц также служит таксономиями? Или предоставить полные страницы для таксономий?

Я запустил блог новостей видеоигр. Когда мои сотрудники пишут новостную статью или обзор, я бы хотел, чтобы они могли «назначить» эту запись в игру (если применимо), поэтому я мог бы получить информацию о вызове шаблона single.php в этой игре (название, boxart, издатель, дата выпуска и т. д.) и отобразить его на боковой панели. Я думал, что это может быть связано с пользовательской таксономией, чтобы ее можно было назначить почте, как и теги.

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

И ТОГДА я понял, что также хотел, чтобы у этих издателей и разработчиков были свои собственные страницы. Описание, местоположение, ссылки на статьи, связанные с ними, списки любых приписываемых им игр … и так далее.

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

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

Solutions Collecting From Web of "Создание страниц также служит таксономиями? Или предоставить полные страницы для таксономий?"

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

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

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

public function get_select_array($post_type) { global $wpdb; $query = "SELECT ID, post_title FROM $wpdb->posts WHERE post_type = '$post_type' AND post_status = 'publish' ORDER BY post_title"; $results = $wpdb->get_results($query, OBJECT); $series = array(); foreach ($results as $result) { $series[] = array('name' => $result->post_title, 'value' => $result->ID); } return $series; } 

Функция get_select_array () в основном принимает пользовательский тип сообщения и возвращает заголовки сообщений и идентификаторы всех тех, которые публикуются в массиве. Затем я использую этот массив для заполнения окна выбора. В моем плагине я использую класс создания метабокса, созданный Rilwis, но я выложу код для вас (код адаптирован из кода Rilwis):

 add_meta_box('parent_series', 'Series', 'show_series_metabox', 'episode', 'side', 'high'); //add a side metabox function show_series_metabox() { global $post; echo '<input type="hidden" name="wp_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />'; //nonce $series = get_select_array('series'); //get post titles and ID's of post type 'series $meta = get_post_meta($post->ID, 'parent_series', true); //get the meta value of the custom field echo '<select name="parent_series" id="parent_series">';//create the select box foreach ($series as $s) { echo '<option value="', $s['value'], '"', $meta == $s['value'] ? ' selected="selected"' : '', '>', $s['name'], '</option>'; } echo '</select>'; } add_action('save_post', 'save_series_metabox'); function save_series_metabox() { $real_post_id = isset($_POST['post_ID']) ? $_POST['post_ID'] : NULL ; //get post id $old = get_post_meta($real_post_id, 'parent_series', true); //get old stored meta value $new = $_POST['parent_series']; //new meta value if ($new && $new != $old) { //saving or deleting value update_post_meta($real_post_id, 'parent_series', $new); } elseif ('' == $new && $old) { delete_post_meta($real_post_id, 'parent_series', $old); } } 

Это добавит метабокс, в котором есть выбор, в котором перечислены все доступные серии. Когда сообщение сохраняется, идентификатор этой серии будет сохранен в настраиваемом поле с именем «parent_series». Как только это будет сделано, вы можете вызвать этот идентификатор и использовать его для вызова информации о серии через пользовательский запрос. Или можно сделать обратное: на странице сериала вы делаете запрос для всех страниц эпизода, которые имеют одинаковое значение в своих настраиваемых полевых / метаданных.

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