Я хочу создать пользовательскую страницу для моего блога WordPress, которая будет выполнять мой PHP-код в нем, оставаясь частью общего сайта CSS / theme / design.
PHP-код будет использовать сторонние API (поэтому мне нужно включить другие файлы PHP)
Как это сделать?
NB У меня нет конкретной необходимости взаимодействовать с WordPress API – помимо включения некоторых других PHP-библиотек, мне нужно, чтобы у меня не было других зависимостей в коде PHP, который я хочу включить в WP-страницу. Поэтому очевидно, что любое решение, не требующее изучения WP API, будет лучшим.
Вам не нужно взаимодействовать с API или использовать плагин.
Во-первых, post.php
или page.php
в папке темы (в разделе /wp-content/themes/themename/
).
Переименуйте новый файл как templatename.php
(где templatename – это то, что вы хотите назвать своим новым шаблоном). Чтобы добавить новый шаблон в список доступных шаблонов, введите следующее в начало нового файла:
<?php /* Template Name: Name of Template */ ?>
Вы можете изменить этот файл (используя PHP), чтобы включить другие файлы или все, что вам нужно.
Затем создайте новую страницу в своем блоге WordPress, и на экране редактирования страницы вы увидите раскрывающийся список шаблонов в виджетах Attributes справа. Выберите новый шаблон и опубликуйте страницу.
Ваша новая страница будет использовать код PHP, определенный в templatename.php
Если вы хотите создать свой собственный .php-файл и взаимодействовать с WordPress без заголовков 404 и сохранить свою текущую структуру ссылок, нет необходимости в файле шаблона для этой 1 страницы, я обнаружил, что этот подход работает лучше всего в вашем .php-файле:
<?php require_once(dirname(__FILE__) . '/wp-config.php'); $wp->init(); $wp->parse_request(); $wp->query_posts(); $wp->register_globals(); $wp->send_headers(); // Your WordPress Functions here... echo site_url(); ?>
Затем вы можете просто выполнять любые функции WordPress после этого. Кроме того, это предполагает, что ваш .php-файл находится в корне вашего сайта wordpress, где находится ваш файл wp-config.php
.
Это, для меня, является прекрасным открытием, поскольку я использовал require_once(dirname(__FILE__) . '/wp-blog-header.php');
в течение долгого времени, когда WordPress даже говорит вам, что это подход, который следует использовать для интеграции функций WordPress, cept, он вызывает 404 заголовка, что странно, что они хотели бы, чтобы вы использовали этот подход. https://codex.wordpress.org/Integrating_WordPress_with_Your_Website
Я знаю, что многие люди ответили на этот вопрос, и у него уже есть принятый ответ, но вот хороший подход для файла .php в корне вашего сайта wordpress (или технически в любом месте, где вы хотите на своем сайте), который вы можете просматривать и загружать без заголовков 404!
Если вы похожи на меня, иногда вы хотите иметь возможность ссылаться на функции WordPress на странице, которая не существует в CMS. Таким образом, он остается специфичным для бэкэнд и не может быть случайно удален клиентом.
На самом деле это просто сделать, включив файл wp-blog-header.php
используя php require()
.
Вот пример, который использует строку запроса для генерации данных OG для Facebook для любого сообщения.
Возьмем пример ссылки, например http://example.com/yourfilename.php?1
где 1
– это идентификатор сообщения, которое мы хотим сгенерировать данные OG для:
Теперь в содержимом yourfilename.php
который для нашего удобства находится в корневом каталоге WP:
<?php require( dirname( __FILE__ ) . '/wp-blog-header.php' ); $uri = $_SERVER['REQUEST_URI']; $pieces = explode("?", $uri); $post_id = intval( $pieces[1] ); // og:title $title = get_the_title($post_id); // og:description $post = get_post($post_id); $descr = $post->post_excerpt; // og:image $img_data_array = get_attached_media('image', $post_id); $img_src = null; $img_count = 0; foreach ( $img_data_array as $img_data ) { if ( $img_count > 0 ) { break; } else { ++$img_count; $img_src = $img_data->guid; } } // end og:image ?> <!DOCTYPE HTML> <html> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=yes" /> <meta property="og:title" content="<?php echo $title; ?>" /> <meta property="og:description" content="<?php echo $descr; ?>" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="website" /> <meta property="og:url" content="<?php echo site_url().'/your_redirect_path'.$post_id; ?>" /> <meta property="og:image" content="<?php echo $img_src; ?>" /> <meta property="og:site_name" content="Your Title" /> </html>
Там у вас есть: сгенерированные модели обмена для любого сообщения, используя фактический образ сообщения, выдержку и название!
Мы могли бы создать специальный шаблон и отредактировать структуру permalink, чтобы сделать это, но так как это необходимо только для одной страницы, и поскольку мы не хотим, чтобы клиент удалял его из CMS, это выглядело как более чистый вариант.
EDIT 2017: Обратите внимание, что этот подход теперь устарел
Для установок WP с 2016 года см. https://stackoverflow.com/a/39800534/1958998 для дополнительных параметров, которые необходимо включить перед выводом данных вашей страницы в браузер.
Создание страницы шаблона – правильный ответ, так как это просто добавьте это на страницу, созданную в папке темы
<?php /* Template Name: mytemplate */ ?>
Для запуска этого кода вам нужно выбрать mytemplate в качестве шаблона страницы с задней стороны
см. эту ссылку, чтобы получить правильные данные https://developer.wordpress.org/themes/template-files-section/page-template-files/page-templates/ .
Вам нужно взглянуть на API плагина WordPress. Это объясняет, как «перехватывать» и «фильтровать» в разные части механики WordPress, поэтому вы можете выполнять собственный код PHP практически в любом месте в любой момент времени. Это зависание, фильтрация и создание пользовательского кода могут выполняться в вашем файле functions.php в любой из ваших тем. Счастливое кодирование 🙂
Широко распространенный ответ Адама Хопкинсона – не полностью автоматизированный способ создания страницы! он требует, чтобы пользователь вручную создавал страницу в конце WordPress (в тире wp-admin). Проблема в том, что хороший плагин должен иметь полностью автоматическую настройку, он не должен требовать, чтобы клиенты вручную создавали страницы.
Кроме того, некоторые из других широко распространенных ответов здесь включают создание статической страницы вне WordPress, которая затем включает только некоторые из функций WordPress для достижения тематического верхнего и нижнего колонтитула. Хотя этот метод может работать в некоторых случаях, это может затруднить интеграцию этих страниц с WordPress без включения всех его функций.
Я считаю, что лучшим, полностью автоматизированным подходом было бы создание страницы с использованием wp_insert_post
и ее сохранение в базе данных. Пример и отличная дискуссия о том, как и как предотвратить случайное удаление страницы пользователем, можно найти здесь: wordpress-automatically-creation-page
Честно говоря, я удивлен, что этот подход еще не упоминался как ответ на этот популярный вопрос (он был опубликован в течение 7 лет).
Если вы не хотите иметь дело с WP API, то ответ Адама действительно самый лучший.
Если бы вы хотели иметь дело с API, я бы предложил подключиться к крючку с шаблоном-перенаправлением, что позволило бы указать конкретный URL-адрес или страницу на произвольный файл PHP, все еще имея доступ к WP.
Помимо создания пользовательского файла шаблона и назначения этого шаблона на страницу (например, в примере в принятом ответе), существует также способ использования соглашения об именах шаблонов, который WordPress использует для загрузки шаблонов (иерархия шаблонов). Создайте новую страницу и используйте пул этой страницы для имени файла шаблона (создайте файл шаблона с именем page- {slug} .php ). WordPress автоматически загрузит шаблон, соответствующий этому правилу.
Попробуй это:
/** * The template for displaying demo page * * template name: demo template * */
Вы можете назвать свой файл newpage.php – поместите его в свой каталог тем в wp-content. Вы можете сделать его шаблоном страницы (см. http://codex.wordpress.org/Pages … ), Или вы можете включить его в один из php-файлов в вашей теме, например header.php или single.php. Еще лучше, создайте дочернюю тему и поместите ее туда, чтобы оставить свой код темы в одиночку, и его легче обновить.
http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates
<?php /* Template Name: CustomPageT1 */ ?> <?php get_header(); ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php // Start the loop. while ( have_posts() ) : the_post(); // Include the page content template. get_template_part( 'template-parts/content', 'page' ); // If comments are open or we have at least one comment, load up the comment template. if ( comments_open() || get_comments_number() ) { comments_template(); } // End of the loop. endwhile; ?> </main><!-- .site-main --> <?php get_sidebar( 'content-bottom' ); ?> </div><!-- .content-area --> <?php get_sidebar(); ?> <?php get_footer(); ?>
Вы также можете напрямую использовать страницу php, например, создать страницу php и запустить полный путь. например, http: //localhost/path/filename.php