it-roy-ru.com

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

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

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

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

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

223
rutherford

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

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

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

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

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

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

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

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

355
Adam Hopkinson

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

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

23
Solomon Closson

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

14
DrewT

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

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

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

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

7
user5742826

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

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

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

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

3
I am the Most Stupid Person

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

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

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

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

1
Damian Green

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

1
hsatterwhite

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

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

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

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

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

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

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

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

1
ashish thakor

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

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

/**
 * The template for displaying demo page
 *
 * template name: demo template
 *
 */
0
Heena Patel

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

0
Danijel

Лучший способ добавить 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(); ?>

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

0
Gufran Hasan

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

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

0
Stephen R

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

0
Elias Katsaniotis

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

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

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

0
Nirav Webbleu