Як я можу додати сторінку PHP до WordPress?


263

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

У коді PHP будуть використовуватися сторонні API (тому мені потрібно включити інші файли PHP).

Як я це досягну?

NB: У мене немає конкретної потреби взаємодіяти з API WordPress - крім включення деяких інших бібліотек PHP, мені потрібно, щоб я не мав інших залежностей у PHP-коді, який я хочу включити на сторінку WordPress. Тож очевидно, що будь-яке рішення, яке не вимагало вивчення API WordPress, було б найкращим.


ви можете використовувати ці плагіни: wordpress.org/extend/plugins/exec-php або wordpress.org/extend/plugins/php-code-widget Сподіваюся, що це допоможе!
Michaël

Відповіді:


400

Вам не потрібно взаємодіяти з API або використовувати плагін.

Спочатку дублюйте post.phpабо page.phpв папці тем (під /wp-content/themes/themename/).

Перейменуйте новий файл як templatename.php(де ім'я шаблону називається новим шаблоном). Щоб додати новий шаблон до списку доступних шаблонів, введіть наступне у верхній частині нового файлу:

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

Ви можете модифікувати цей файл (за допомогою PHP), щоб він включав інші файли або все, що вам потрібно.

Потім створіть нову сторінку у своєму блозі WordPress, а на екрані редагування сторінки ви побачите спадок Шаблон у віджеті Атрибути праворуч. Виберіть новий шаблон і опублікуйте сторінку.

Ваша нова сторінка використовуватиме код PHP, визначений у templatename.php

Джерело: Створення власних шаблонів сторінок для глобального використання


20
Опція шаблону була недоступною, поки я не створив файл із коментарем до нього. Потім з’явився варіант шаблону. Приємно - я збирався використовувати шорт-коди, але це простіше.
Дейв Хілдич

1
Чи є якісь недоліки використання плагіна для публікації php?
Сухайль Гупта

1
Сторінка - це сторінка, коли браузер переглядає її як http-запит - так, так.
Адам Хопкінсон

3
@DamianGreen запитання не задає повністю автоматизований спосіб, і насправді показує перевагу уникати API WP
Адам Хопкінсон

3
Ця відповідь почувається неправильною, оскільки вона не використовує вже існуючі елементи теми, а копіює їх (абзац 2). Якщо тему надано третьою стороною, то вона може отримувати оновлення теми, які не будуть перетворюватися на спеціальний шаблон. Далі це додає складності зміні зовнішнього вигляду вашого сайту, зміна теми вимагає відновлення користувацької сторінки. Чи не буде плагін кращим з цих двох причин? Те, як я читаю питання, ОП хоче додати додаткову функціональність, а не додаткові елементи теми «використання сторонніх API»
Філіп Кулінг

29

Якщо ви хотіли створити власний .php файл та взаємодіяти з WordPress без 404 заголовків і зберігаючи поточну структуру постійної посилання, немає необхідності в файлі шаблону для цієї сторінки.

Я виявив, що цей підхід найкраще працює у вашому .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, за винятком того, що він спричиняє 404 заголовків, що дивно, що вони хотіли б Ви використовуєте цей підхід. Інтеграція WordPress зі своїм веб-сайтом

Я знаю, що багато людей відповіли на це питання, і на нього вже є прийнята відповідь, але ось приємний підхід до .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();
?>

Просто для того, щоб оновлювати вас на цьому, для цього підходу потрібно трохи менше коду, але саме від вас залежить, яким саме ви користуєтесь.


1
І все-таки 404 заголовків трапляється, і навіть файл мультисайту Wordpress у муніципалітеті wp-activate.phpмає вимкнути заголовок 404 шляхом встановлення $wp_query->is_404 = falseпід час активації нових мультисайтів require( dirname( __FILE__ ) . '/wp-blog-header.php' );у верхній частині цієї сторінки.
Соломон Клоссон

2
я не розумію, як ви не можете відтворити проблему. Відтворити дуже просто. Просто встановіть Wordpress, ніж створіть .php-файл, використовуйте wp-blog-header.phpпідхід, визначений на веб- сайті codex.wordpress.org/Integrating_WordPress_with_Your_Web, ніж дивіться заголовок 404 в інструментах інспектора браузера.
Соломон Клоссон

1
Ось веб-сторінка, яка документує цю проблему, також, якщо ви її пропустили під час інтенсивного дослідження цієї проблеми: cooltrainer.org/…
Соломон Клоссон,

1
Випуск заголовка - це питання, яке трапляється в останніх версіях WordPress, саме те, що я запропонував у своєму первинному коментарі. Обережно використовуйте слова типу "ніколи не виходить з ладу". :)
DrewT

1
Це дуже неправильний підхід до проблеми. Пройшовши цей маршрут, ви створюєте рішення, яке буде працювати лише до тих пір, поки WP не змінить завантажувальну систему. Вам слід скористатись гачками, що дозволяють (легко) виконати те, що це намагається зробити.
Лоуренс Джонсон

13

Якщо ви схожі на мене, іноді ви хочете мати можливість посилатися на функції WordPress на сторінці, яка не існує в CMS. Таким чином, він залишається специфічним для бекенда і не може бути випадково видалений клієнтом.

Це насправді зробити просто, включивши wp-blog-header.phpфайл за допомогою PHP require().

Ось приклад, який використовує рядок запиту для створення Facebook Open Graph (OG) для будь-якої публікації.

Візьмемо приклад посилання, наприклад, http://example.com/yourfilename.php?1де 1є ідентифікатор публікації, для якої ми хочемо генерувати дані OG:

Тепер у вмісті, yourfilename.phpякий, для нашої зручності, знаходиться в кореневій каталозі WordPress:

<?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, це здавалося чистішим варіантом.


EDIT 2017: Зверніть увагу, що цей підхід зараз застарілий

Для установок WordPress з 2016 р. І більше див. Як я можу додати сторінку PHP до WordPress? для включення додаткових параметрів перед виведенням даних вашої сторінки в браузер.


9

Створення сторінки шаблону - правильна відповідь. Для цього просто додайте це на сторінку, яку ви створили всередині папки теми:

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

Для запуску цього коду потрібно вибрати " шаблон " як шаблон сторінки із зворотного кінця.

Перейдіть за цим посиланням, щоб отримати правильні дані https://developer.wordpress.org/themes/template-files-section/page-template-files/ .


5

Будь-яка відповідь не стосувалася, якщо вам потрібно додати сторінку PHP поза темою WordPress. Це шлях.

Вам потрібно включити wp-load.php.

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

Тоді ви можете використовувати будь-яку функцію WordPress на цій сторінці.


Ця ідея була дуже корисною для мене. Однак перегляньте цю публікацію про require_once('wp-load.php');правильне використання
optimiertes

1

Створіть сторінку, назвіть її my-page.php та збережіть її у своєму тематичному каталозі. Тепер відредагуйте цей файл php та напишіть наступний рядок у верхній частині сторінки

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

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

Почніть як <?php require_once("header.php");?>АБО

будь-яким способом ви інтегруєте заголовок і колонтитул, щоб підтримувати узгодження макета.

Оскільки це моя сторінка, вам НЕОБХІДНО СТВОРИТИ СТОРІНКУ з адмін панелі WordPress. Перейдіть до адміністратора => Сторінки => Додати нове

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

У правій частині виберіть Шаблон. Виберіть "Моя спеціальна сторінка" зі спадного меню. Ви все налаштовані! Перейдіть до слизу (постійна посилання), створеного [wordpress] [1], і перегляньте сторінку.


1

Кращий спосіб додати 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(); ?>

Детальніше


1

Ви захочете ознайомитися з API плагінів WordPress.

Це пояснює, як "підключити" і "фільтрувати" різні частини механіки WordPress, так що ви можете виконувати користувацький PHP-код в будь-якому місці в будь-який момент часу. Це підключення, фільтрування та створення спеціального коду може відбуватися у вашому файлі function.php у будь-якій з ваших тем. Щасливе кодування :)


Я не дуже хочу взаємодіяти з самим API Wordpress - мій PHP-код повністю незалежний від будь-яких шенагістів WP. Але мені потрібно посилатися на зовнішні файли PHP. Ви впевнені, що саме в цьому випадку потрібно вивчити API?
Резерфорд

Все залежить від того, що ви намагаєтеся зробити. Використання API може допомогти в деяких випадках, а в інших зовсім не важливим. Все залежить від того, що ви намагаєтесь досягти. Ви можете скористатися пропозицією @ adam і використовувати шаблони сторінок, або ви можете зберегти весь власний код в одній кошику, а потім підключити / фільтрувати в різних частинах WordPress. Я б сказав, що все і все, вибирайте, що найкраще працює і з чим вам комфортно. Усі три відповіді в тій чи іншій формі виконають те, що ви хочете.
hsatterwhite

1

Якщо ви не хочете мати справу з API WordPress, то відповідь Адама справді найкраща.

Якщо ви готові мати справу з API, я б запропонував підключити гачок "перенаправлення шаблону", що дозволить вам вказати певну URL-адресу або сторінку на довільний файл PHP, маючи доступ до WordPress.


1

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

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

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

Відверто кажучи, я здивований, що такий підхід вже не згадувались як відповідь на це популярне питання (він розміщувався протягом 7 років).


1
Відразу після того, як я написав вищевказану відповідь, я зрозумів, що намір користувача повинен мати можливість включити PHP до вмісту сторінки, такий підхід очевидно не дозволяє цього; PHP можна використовувати лише для генерування контенту, не включаючи його до контенту, таким чином сторінка зберігатиметься статично, а не динамічно. Однак ви можете надати сторінці динамічний вигляд, відтворюючи сторінку та її вміст (надаючи ідентифікатор сторінки) кожного разу, коли вона викликається. Ваш плагін буде обробляти, коли і як це відбувається, можливо, відстежуючи $ _SERVER ["REQUEST_URI"]
Damian Green,

2
У своїй відповіді ви говорите про запобігання випадкового видалення користувачем. Як ти це робиш?
GJ


0

Окрім створення файлу власного шаблону та призначення цього шаблону до сторінки (як у прикладі у прийнятій відповіді), існує також спосіб з умовою іменування шаблонів, яку WordPress використовує для завантаження шаблонів (ієрархія шаблонів).

Створіть нову сторінку та використовуйте слуп цієї сторінки для імені файлу шаблону (створіть файл шаблону з назвою page- {slug} .php ). WordPress автоматично завантажить шаблон, який відповідає цьому правилу.


0

Просто створіть page-mytitle.phpфайл у папку поточної теми, а на інформаційній панелі - сторінку "mytitle" .

Потім, коли ви викликаєте сторінку за URL-адресою, ви побачите сторінку-mytitle.php. Ви повинні додати HTML, CSS, JavaScript, wp-цикл тощо до цього файлу PHP ( page-mytitle.php).


0

Ви можете додати будь-який файл php в папку з активними темами, як-от (/ wp-content / themes / your_active_theme /), а потім можна перейти до додавання нової сторінки з wp-admin і вибрати шаблон цієї сторінки з параметрів шаблону сторінки.

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

І є ще один спосіб, як ви можете включити свій файл у function.php і створити з нього короткий код, і тоді ви можете помістити цей короткий код на свою сторінку так.

// CODE in functions.php 

function abc(){
 include_once('your_file_name.php');
}
add_shortcode('abc' , 'abc');

І тоді ви можете використовувати цей короткий код на стороні wp-admin, як ця [abc] .


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

-2

Ви можете назвати свій файл "newpage.php" - помістіть його у свій тематичний каталог wp-content. Ви можете зробити його шаблоном сторінки (див. Http://codex.wordpress.org/сторінки). ) або можете включити його до одного з файлів PHP у вашій темі, наприклад, header.php або single.php.

Ще краще, створіть дочірню тему і вставте її туди, щоб ви залишили свій код теми в спокої, і оновити його простіше.

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


Посилання напівперервано: воно переадресовується два рази, і немає жодного підрозділу під назвою "Створення власних шаблонів сторінок" . Найближчим може бути або не бути підрозділом " Шаблони сторінок ". Є також окрема сторінка (однойменна) Шаблони сторінок
Пітер Мортенсен

-5

Ви також можете безпосередньо використовувати сторінку PHP, як створити сторінку PHP і запустити повний шлях.

Мовляв, http: //localhost/path/filename.php


Але функція перекладу не працює, тому вона чомусь не завантажується.
ram4nd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.