Как добавить страницу PHP в WordPress? - PullRequest
235 голосов
/ 11 мая 2010

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

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

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

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

Ответы [ 18 ]

370 голосов
/ 11 мая 2010

Вам не нужно взаимодействовать с 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

25 голосов
/ 01 октября 2016

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

EDIT

Просто быстрое обновление здесь. Есть способ использовать 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();
?>

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

13 голосов
/ 17 декабря 2014

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

Это на самом деле просто сделать, просто включив файл wp-blog-header.php с помощью php require().

Вот пример, который использует строку запроса для генерации данных Facebook OG для любого сообщения.

Возьмем пример ссылки типа 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>

Вот и все: сгенерированные модели обмена для любого поста с использованием действительного изображения, отрывка и заголовка поста!

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


РЕДАКТИРОВАТЬ 2017: Обратите внимание, что этот подход устарел

Для установок WP от 2016+ см. https://stackoverflow.com/a/39800534/1958998, чтобы узнать о дополнительных параметрах, которые нужно включить перед выводом данных вашей страницы в браузер.

7 голосов
/ 09 января 2016

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

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

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

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

4 голосов
/ 30 марта 2018

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

Вам необходимо включить wp-load.php.

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

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

1 голос
/ 26 июля 2018

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

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

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

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

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

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

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

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

1 голос
/ 05 августа 2017

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

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

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

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

0 голосов
/ 28 сентября 2018

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

0 голосов
/ 20 февраля 2018

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

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

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

0 голосов
/ 11 июля 2017

Попробуйте это:

/**
 * The template for displaying demo page
 *
 * template name: demo template
 *
 */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...