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

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

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

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

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

16 ответов


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


если вы хотите создать свой собственный .php-файл и взаимодействовать с Wordpress без 404 заголовков и сохраняя текущую структуру permalink нет необходимости в файле шаблона для этой страницы 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, где ваш есть.

Это для меня, это бесценное открытие, как я использовал require_once(dirname(__FILE__) . '/wp-blog-header.php'); в течение самого долгого времени, как Wordpress даже говорит вам, что это подход, который вы должны использовать для интеграции функций Wordpress, cept, это вызывает 404 заголовков, что странно, что они хотели бы, чтобы вы использовали этот подход. https://codex.wordpress.org/Integrating_WordPress_with_Your_Website

Я знаю много людей ответили на этот вопрос и у него уже есть принятый ответ, но вот это хороший подход .РНР файл в корне вашего сайта 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();
?>

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


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

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

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


редактировать 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/.


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

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

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

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


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


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

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

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

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


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

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

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

начало нравится <?php require_once("header.php");?> или

каким образом вы интегрируете свой header и footer для поддержания макета.

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

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

справа выберите шаблон. Выберите мою пользовательскую страницу из раскрывающегося списка. Все готово! Перейдите в slug (permalink), созданный [wordpress][1], и посмотрите страницу.


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

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


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


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

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

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

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

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


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


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

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