Как добавить страницу PHP в WordPress?

Я хочу создать пользовательскую страницу для своего блога WordPress, в которой будет выполняться мой PHP-код, оставаясь частью общего сайта CSS/theme/design.

PHP-код будет использовать сторонние API (поэтому мне нужно включить другие файлы PHP)

Как это сделать?

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

Ответ 1

Вам не нужно взаимодействовать с API или использовать плагин.

Сначала скопируйте post.php или page.php в папке вашей темы (в /wp-content/themes/themename/).

Переименуйте новый файл в templatename.php (где templatename - это то, что вы хотите назвать новым шаблоном). Чтобы добавить новый шаблон в список доступных шаблонов, введите следующее в верхней части нового файла:

<?php
/*
Template Name: Name of Template
*/
?>

Вы можете изменить этот файл (используя PHP), чтобы включить другие файлы или все, что вам нужно.

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

Ваша новая страница будет использовать код PHP, определенный в templatename.php

Источник: https://developer.wordpress.org/themes/template-files-section/page-template-files/#creating-custom-page-templates-for-global-use

Ответ 2

Если вы хотите создать свой собственный файл .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 заголовков!

РЕДАКТИРОВАТЬ

Просто быстрое обновление здесь. Существует способ использовать wp-blog-header.php без 404 заголовков, но для этого необходимо добавить заголовки вручную, что-то вроде этого будет работать в корне вашей установки WordPress:

<?php
    require_once(dirname(__FILE__) . '/wp-blog-header.php');
    header("HTTP/1.1 200 OK");
    header("Status: 200 All rosy");

    // Your Wordpress Functions here...
    echo site_url();
?>

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

Ответ 3

Если вы похожи на меня, иногда вы хотите иметь возможность ссылаться на функции 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, это выглядело как более чистый вариант.


ИЗМЕНИТЬ 2017: Обратите внимание, что этот подход теперь устарел

Для установок WP от 2016+ см. fooobar.com/questions/32981/... дополнительные параметры для включения до вывода ваших данных страницы в браузер.

Ответ 4

Создание страницы шаблона - правильный ответ, так как это просто добавьте это на страницу, созданную в папке темы

<?php
/*
Template Name: mytemplate
*/
?>

Для запуска этого кода вам нужно выбрать mytemplate в качестве шаблона страницы с задней стороны

пожалуйста, просмотрите эту ссылку, чтобы получить правильные данные https://developer.wordpress.org/themes/template-files-section/page-template-files/page-templates/.

Ответ 5

Ни один ответ не охватывает, если вам нужно добавить страницу PHP за пределами темы WordPress. Это способ.

Вам нужно включить wp-load.php.

<?php require_once('wp-load.php'); ?>

Затем вы можете использовать любую функцию WordPress на этой странице.

Ответ 6

Вам нужно взглянуть на API плагинов WordPress. Это объясняет, как "перехватывать" и "фильтровать" в разные части механики WordPress, поэтому вы можете выполнять собственный код PHP практически в любом месте в любой момент времени. Это зависание, фильтрация и создание пользовательского кода могут выполняться в вашем файле functions.php в любой из ваших тем. Счастливое кодирование:)

Ответ 7

Широко распространенный ответ Адама Хопкинсона - не полностью автоматизированный способ создания страницы! он требует, чтобы пользователь вручную создавал страницу в конце WordPress (в тире wp-admin). Проблема в том, что хороший плагин должен иметь полностью автоматическую настройку, он не должен требовать от клиентов вручную создавать страницы.

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

Я думаю, что лучшим, полностью автоматизированным подходом было бы создание страницы с использованием wp_insert_post и ее сохранение в базе данных. Пример и отличная дискуссия о том, как предотвратить случайное удаление страницы пользователем, можно найти здесь: wordpress-automatically-creating-page

Откровенно говоря, я удивлен, что этот подход еще не упоминался как ответ на этот популярный вопрос (он был опубликован в течение 7 лет).

Ответ 8

Создайте страницу с именем my-page.php и сохраните ее в каталоге вашей темы. Теперь отредактируйте этот php файл и напишите следующую строку вверху страницы.

<?php /* Template Name: My Page */ ?>

Напишите свой PHP-код в строке определения пользовательской страницы, вы можете вызвать другой шаблон WP, функции внутри этого файла.

Начните как <?php require_once("header.php");?> ИЛИ

независимо от того, как вы интегрируете верхний и нижний колонтитулы, чтобы макет был согласованным

Так как это моя страница, вам нужно создать страницу из панели администратора WordPress. Перейти к Admin => Страницы => Добавить новый

Добавьте заголовок страницы, в зависимости от того, как вы закодировали пользовательскую страницу, вы также можете добавить тело страницы (описание). Вы можете полностью пропустить описание, если оно написано на пользовательской странице php.

Справа выберите Шаблон. Выберите My Custom Page из выпадающего списка. У вас все настроено! Перейдите к слаг (постоянная ссылка), созданный [wordpress] [1] и посмотрите страницу.

Ответ 9

Если вы не хотите иметь дело с WP API, тогда ответ Адама действительно лучший.

Если бы вы хотели иметь дело с API, я бы предложил подключиться к крючку "шаблон-перенаправление", что позволило бы указать конкретный URL-адрес или страницу на произвольный PHP файл, все еще имея доступ к WP.

Ответ 10

Помимо создания пользовательского файла шаблона и назначения этого шаблона на страницу (например, в примере в принятом ответе), существует также способ использования соглашения об именах шаблонов, который Wordpress использует для загрузки шаблонов (иерархия шаблонов). Создайте новую страницу и используйте пул этой страницы для имени файла шаблона (создайте файл шаблона с именем page- {slug}.php). WordPress автоматически загрузит шаблон, соответствующий этому правилу.

Ответ 11

Попробуйте следующее:

/**
 * The template for displaying demo page
 *
 * template name: demo template
 *
 */

Ответ 12

Переименуйте новый файл в templatename.php (где templatename - это то, что вы хотите назвать новым шаблоном). Чтобы добавить новый шаблон в список доступных шаблонов, введите следующее в верхней части нового файла:

Вы можете изменить этот файл (используя PHP), чтобы включить другие файлы или все, что вам нужно.

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

Ответ 13

просто создайте page-mytitle.php для папки текущей темы, а из панели инструментов - mytitle страницы. Затем, когда вы вызываете страницу по URL, вы увидите страницу-mytitle.php. Вы должны добавить htmp, css, js wp-loop и т.д. В этот php файл (page-mytitle.php)

Ответ 14

Вы можете создать шаблон в Папке тем, после чего поместите свой 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();

Ответ 15

Лучший способ добавить страницы PHP в WordPress в Page Template в папке child-theme.

Как создать Page Template в WordPress.

Создайте файл с именем template-custom.php и поместите его в /wp-content/theme/my-theme/.

<?php
 /*
 * Template Name: Custom Template
 * Custom template used for custom php code display
 * @package   Portafolio WordPress Theme
 * @author    Gufran Hasan
 * @copyright Copyright templatecustom.com
 * @link      http://www.templatecustom.com
 */
?>
<?php get_header(); ?>
<?php
  //write code here

 ?>

<?php get_footer(); ?>

Больше подробностей

Ответ 16

Вы можете назвать свой файл newpage.php - поместите его в свой каталог тем в wp-content. Вы можете сделать его шаблоном страницы (см. http://codex.wordpress.org/Pages...) Или вы можете включить его в один из php файлов в своей теме, например header.php или single.php. Еще лучше, создайте дочернюю тему и поместите ее туда, так что вы оставите свой код темы в одиночку, и его легче обновить.

http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates

Ответ 17

<?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(); ?>

Ответ 18

Вы также можете напрямую использовать страницу php, например, создать страницу php и запустить полный путь. например, http://localhost/path/filename.php