как создать только один пользовательский тип записи?


Можно ли ограничить CPT только одним? Чего я хотел бы достичь, так это создать CPT под названием "Дом". Он будет управлять всеми элементами на домашней странице. Я хочу запрограммировать его так, чтобы, когда пользователь нажимает на ссылку "Управление домашней страницей", он переходил прямо на экран редактирования сообщения. Они будут пропускать экран "Все сообщения". Кто-нибудь думает, что это вообще возможно?

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

Author: Steve Fischer, 2011-08-19

5 answers

Я бы предложил создать страницу параметров темы для этой цели.

Https://wordpress.stackexchange.com/questions/tagged/theme-options

Add_options_page() в Кодексе.

Или есть ли что-то особенное на экране редактирования записи, что вы хотите использовать, что было бы трудно получить на странице параметров темы?

 4
Author: Michal Mau, 2017-04-13 12:37:54

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

Но ваше решение - это банка с червями, готовыми взорваться у вас перед носом, поэтому вместо этого у меня есть гораздо лучшее решение!

Используйте home.php шаблон

В WordPress по умолчанию home.php используется в качестве домашней страницы. Если он не будет найден, front-page.php используется, и если это не найдено, он использует index.php

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

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

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

 1
Author: Tom J Nowell, 2012-04-05 18:25:22

Возможно, этот плагин может вам помочь:

Сайт автора

Плагин WordPress

 0
Author: paulo, 2011-08-19 12:42:42

Стив, я так понимаю, что ты хочешь:

  1. пользовательский тип записи без подменю "Все записи"
  2. вы просто хотите, чтобы ссылка "Редактировать домашнюю страницу" появилась в подменю "Сообщения"?
  3. И вы не хотите, чтобы ваши пользователи добавляли более 1 сообщения для этого конкретного типа сообщений.

Приведенный ниже код настроит администратора WordPress для выполнения вышеуказанного:

Примечание пользователи по-прежнему могут добавлять запись в пользовательский тип записи с помощью wp_insert_post

<?php
/**
 * Plugin Name: Home Page CPT
 **/

class WPSE_26330_Homepage_CPT {

    function __construct() {

        // add the default homepage on plugin activation
        register_activation_hook( __FILE__, array( &$this, 'add_home_page_post' ) );

        // register the homepage post type
        add_action( 'init', array( &$this, 'register_homepage_cpt' ) );

        // add the menu link
        add_action( 'admin_menu', array( &$this, 'edit_homepage_link' ) );
    }

    function edit_homepage_link() {
        global $submenu, $pagenow;

        // query the homepage posts
        $homepage = new WP_Query( 'post_type=homepage' );

        // if its new post page and we have homepage
        if ( $pagenow == 'post-new.php' && $homepage->have_posts() ) {
            wp_die('You cant add more then one homepage');
        }

        // if we have homepage post, show the edit link else the add homepage link
        if ( $homepage->have_posts() ) {
            $homepage->the_post();
            $link = get_edit_post_link( get_the_ID(), 'return' );
            $title = 'Edit Home Page';
        } else {
            // in case if the user has deleted the default post
            $link = get_bloginfo( 'url' ). '/wp-admin/post-new.php?post_type=homepage';
            $title = 'Add Home Page';
        }
        $submenu['edit.php'] = array( array( $title, 'manage_options', $link ) ) + $submenu['edit.php'];
    }

    function register_homepage_cpt() {
        $args = array( 
            'label' => 'homepage',
            'description' => 'Home Page post type',
            'public' => true,
            'show_in_menu' => false
        );
        register_post_type( 'homepage', $args );
    }

    function add_home_page_post() {
        // on activation first regsiter the post type
        $this->register_homepage_cpt();

        // add the first and only post
        $post_data = array(
            'post_title' => 'Home Page',
            'post_type' => 'homepage',
            'post_statue' => 'publish',
            'post_author' => 1
        );
        wp_insert_post( $post_data );
    }

}

$GLOBALS['wpse_homepage_cpt'] = new WPSE_26330_Homepage_CPT;
?>
 0
Author: Hameedullah Khan, 2012-01-02 16:59:33

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

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

Итак, когда клиент нажимает "Редактировать страницу" в меню WordPress, ему открывается страница редактирования публикации для "Главная", со всеми областями, которыми он управляет, аккуратно выложенными.

Затем я настроил home.php шаблон для вызова поля вывода в нужных местах. Есть несколько хороших учебных пособий и фрагменты кода на главном сайте ACF.

Это сделало ОЧЕНЬ счастливого клиента и избавило меня от многих разочарований в будущем.

 0
Author: SickHippie, 2012-06-05 21:57:40