Intereting Posts
Показать div только в том случае, если сообщение находится в определенной категории Создайте дочернюю тему после того, Как отобразить Самые последние прочитанные 10 Сообщений пользователем, зарегистрированным в WordPress Заказ сообщений по массиву Изменить текст описания в библиотеке изображений Не удалось получить результат пользовательского поиска, используя meta_query и tax_query? Различные заголовки для каждой категории wp_list_pages: показывать только подстраницы на родительской странице? Удалите пул блога из корневого узла WordPress Multisite Форма письма в модальном поле без плагина WordPress добавляет параметры к теме, не отображающей Условная загрузка CSS для моего плагина Отобразить список всех сообщений автора с автора на странице автора (author.php) в альфебетическом порядке Создайте новый URL-адрес администратора для настраиваемого типа сообщения Удаление элементов меню панели инструментов через базу данных

Привет плагин типа dolly, который позволяет людям добавлять свои собственные

Я делаю плагин, который показывает случайную шутку на пользовательской странице 404 с помощью короткого кода, и он в основном почти такой же, как и стандартный плагин hello dolly, где шутки жестко закодированы в скрипт.

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

Я новичок в разработке плагинов wordpress, но я знаю довольно много php.

Вот код, который я должен сейчас создать

add_action('admin_menu', 'jokes_admin_add_page'); function jokes_admin_add_page() { add_options_page('Jokes Page', 'Jokes Menu', 'manage_options', 'plugin', 'jokes_plugin_options_page'); } // display the admin options page function jokes_plugin_options_page() { ?> <div> <h2>My custom plugin</h2> Options relating to the Custom Plugin. <form action="options.php" method="post"> <?php settings_fields('plugin_options'); ?> <?php do_settings_sections('plugin'); ?> <input name="Submit" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" /> </form></div> <?php } 

Solutions Collecting From Web of "Привет плагин типа dolly, который позволяет людям добавлять свои собственные"

Не используйте для этого настройки api.

Зарегистрируйте настраиваемый тип сообщения , «Joke», см. Register_post_type docs

 add_action( 'init', function () { $labels = array( 'name' => 'Jokes', 'singular_name' => 'Joke', 'add_new' => 'Add New', 'add_new_item' => 'Add New Joke', 'new_item' => 'New Joke', 'edit_item' => 'Edit Joke', 'view_item' => 'View Joke', 'all_items' => 'All Jokea', 'search_items' => 'Search Jokes', 'not_found' => 'No jokes found.', 'not_found_in_trash' => 'No jokes found in Trash.', ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => false, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => false, 'query_var' => false, 'rewrite' => false, 'capability_type' => 'post', 'has_archive' => false, 'hierarchical' => false, 'supports' => array( 'title', 'editor') ); register_post_type( 'joke', $args ); }); 

Для каждого аргумента обратитесь к документации .

WordPress добавит вам меню администрирования.

Теперь пользователи вашего сайта могут создавать свои собственные шутки.

На этом этапе вы можете написать функцию, которая принимает случайную шутку, возвратить разметку, я буду использовать get_posts для области:

 function get_random_joke() { $args = array( 'post_type' => 'joke', // be sure this is exactly 1st arg of register_post_type 'posts_per_page' => 1, // one joke is enough 'orderby' => 'rand' // randomly ); $jokes = get_posts( $args ); if ( empty( $jokes ) ) return; // no jokes, nothing to do $joke = array_pop( $jokes ); // get posts always returns an array $out = '<div id="joke">'; $out .= sprintf( '<h3>%s</h3>', apply_filters('the_title', $joke->post_title) ); $out .= sprintf( '<p>%s</p>', apply_filters('the_content', $joke->post_content) ); $out .= '<div>'; return $out; } 

И может вызвать эту функцию из короткого кода:

 add_shortcode( 'joke' , 'get_random_joke' ); 

Теперь вы можете указывать свои сообщения / страницы [joke] и будет показана случайная шутка (если есть некоторые …)

Однако, если вы разрабатываете плагин, возможно, что в теме файл 404.php не содержит никаких сообщений или страниц, поэтому, где вы поместите этот короткий код?

Вероятно, вы можете написать свой собственный 404-шаблон и использовать его вместо темы one, просто вопрос фильтра на 'template_include' :

 add_filter( 'template_include', function( $template ) { if ( is_404() ) $template = plugin_dir_path( __FILE__ ) . '404.php'; return $template; } ); 

Используя этот код, когда есть запрос, который превращается в 404, WordPress потребует «404.php» в вашей папке плагина, а не в теме.

В этом шаблоне вы можете использовать get_random_joke() для вывода шутки, просто пример (тема с высокой производной темой 2013):

 <?php get_header(); ?> <div id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <header class="page-header"> <h1 class="page-title">Not found</h1> </header> <div class="page-wrapper"> <div class="page-content"> <h2>This is somewhat embarrassing, isn&rsquo;t it?</h2> <p>It looks like nothing was found at this location. Maybe try a search?</p> <?php get_search_form(); ?> <?php echo get_random_joke(); ?> </div> </div> </div> </div> <?php get_footer(); ?>