WordPress'e nasıl bir PHP sayfası ekleyebilirim?


263

Genel site CSS / tema / tasarımının bir parçası olarak kalırken, WordPress blogum için PHP kodumu çalıştıracak özel bir sayfa oluşturmak istiyorum.

PHP kodu üçüncü taraf API'leri kullanır (bu yüzden diğer PHP dosyalarını dahil etmek gerekir).

Bunu nasıl başarabilirim?

NB: WordPress API ile etkileşimde bulunmak için özel bir ihtiyacım yok - bazı diğer PHP kütüphanelerini dahil etmenin dışında, bir WordPress sayfasına dahil etmek istediğim PHP kodunda başka bağımlılıklara ihtiyacım yok. Açıkçası WordPress API'sini öğrenmeyi gerektirmeyen herhangi bir çözüm en iyisi olacaktır.


şu eklentileri kullanabilirsiniz: wordpress.org/extend/plugins/exec-php veya wordpress.org/extend/plugins/php-code-widget Umarım yardımcı olacaktır!
Michaël

Yanıtlar:


400

API ile etkileşim kurmanıza veya bir eklenti kullanmanıza gerek yoktur.

İlk olarak, yinelenen post.phpveya page.phptema klasörünüzde (altında/wp-content/themes/themename/ ).

Yeni dosyayı yeniden adlandırın templatename.php(burada geçici şablon yeni şablon olarak adlandırmak istediğiniz addır). Yeni şablonunuzu kullanılabilir şablonlar listesine eklemek için yeni dosyanın üstüne aşağıdakileri girin:

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

Bu dosyayı (PHP kullanarak) diğer dosyaları veya ihtiyacınız olanı içerecek şekilde değiştirebilirsiniz.

Ardından WordPress blogunuzda yeni bir sayfa oluşturun ve sayfa düzenleme ekranında sağ taraftaki Özellikler widget'ında bir Şablon açılır penceresi görürsünüz . Yeni şablonunuzu seçin ve sayfayı yayınlayın.

Yeni sayfanızda tanımlanan PHP kodunu kullanacak templatename.php

Kaynak: Global Kullanım için Özel Sayfa Şablonları Oluşturma


20
İçinde yorum bulunan dosyayı oluşturana kadar şablon seçeneği kullanılamadı. Ardından şablon seçeneği belirdi. Güzel - Kısa kod kullanacaktım ama bu çok daha kolay.
Dave Hilditch

1
Php yayınlamak için bir eklenti kullanmanın herhangi bir dezavantajı var mı?
Suhail Gupta

1
Sayfa, tarayıcı görüntülediğinde bir http isteği olan bir sayfadır - yani evet.
Adam Hopkinson

3
@DamianGreen soru tam otomatik bir yol istemiyor ve aslında WP API'sından kaçınma tercihini gösteriyor
Adam Hopkinson

3
Bu cevap yanlıştır çünkü mevcut tema öğelerini tekrar kullanmıyor, onları kopyalayıp yapıştırıyor (paragraf 2). Tema üçüncü bir tarafça sağlanırsa, özel bir şablona geçiş yapmayacak tema güncellemeleri alabilir. Ayrıca, sitenizin görünümünü ve izlenimini değiştirmeye karmaşıklık katar, temayı değiştirmek özel sayfanın yeniden oluşturulmasını gerektirir. Bir eklenti bu iki nedenden dolayı daha iyi olmaz mıydı? Soruyu okuduğumda, OP ek tema öğeleri değil, "3. taraf API'lerin kullanımı"
Philip Couling

29

Kendi .php dosyanızı oluşturmak ve 404 üstbilgisi olmadan WordPress ile etkileşim kurmak ve mevcut kalıcı bağlantı yapınızı korumak istiyorsanız , o sayfa için bir şablon dosyasına gerek yoktur .

Bu yaklaşımın .php dosyanızda en iyi şekilde çalıştığını buldum:

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

Daha sonra bundan sonra herhangi bir WordPress işlevini gerçekleştirebilirsiniz. Ayrıca, bu .php dosyanızın dosyanızın bulunduğu WordPress sitenizin kökünde olduğunu varsayar wp-config.php.

Bu, bana göre, WordPress'in size WordPress işlevlerini entegre etmek için kullanmanız gereken yaklaşım olduğunu söylediğinden, en uzun süredir kullandığım gibi paha biçilemez bir keşif require_once(dirname(__FILE__) . '/wp-blog-header.php');, ancak 404 başlığa neden oluyor, bu yaklaşımı kullanmalısınız. WordPress'i Web Sitenizle Entegre Etme

Birçok kişinin bu soruyu cevapladığını biliyorum ve zaten kabul edilmiş bir cevabı var, ancak burada, WordPress sitenizin (veya sitenizde teknik olarak istediğiniz herhangi bir yerde) kökündeki bir .php dosyası için göz atabileceğiniz hoş bir yaklaşım var. 404 başlık olmadan yükleme ve yükleme!


Güncelleme: wp-blog-header.php404 üstbilgisi olmadan kullanmanın bir yolu vardır , ancak bu, üstbilgileri manuel olarak eklemenizi gerektirir. Bunun gibi bir şey WordPress kurulumunuzun kökünde çalışır:

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

Hepinizi bu konuda güncellemek için, bu yaklaşım için biraz daha az kod gerekiyordu, ancak hangisini kullandığınıza bağlı.


1
Yine de 404 Üstbilgi oluşur ve Wordpress çoklu site dosyası bile yeni çoklu siteleri etkinleştirirken wp-activate.php404 üstbilgisini devre dışı bırakmak zorundadır.$wp_query->is_404 = falserequire( dirname( __FILE__ ) . '/wp-blog-header.php' ); bu sayfanın üst kısmındaki .
Solomon Closson

2
Sorunu nasıl yeniden yaratamayacağınızı anlamıyorum. Yeniden oluşturmak çok basit. Wordpress'i yükleyin, bir .php dosyası oluşturmak yerine wp-blog-header.php, yerine, tarayıcı denetleyici araçlarınızdaki 404 başlığını görmek yerine codex.wordpress.org/Integrating_WordPress_with_Your_Website'da .
Solomon Closson

1
İşte bu sorunla ilgili yoğun araştırmanız sırasında kaçırmış olmanız durumunda, bu sorunu belgeleyen bir web sayfası: cooltrainer.org/…
Solomon Closson

1
Başlık sorunu, ilk yorumumda tam olarak önerdiğim şey olan WordPress'in en son sürümlerinde meydana gelen bir sorundur. 'Asla başarısız olmaz' gibi kelimeleri kullanmaya dikkat edin. :)
DrewT

1
Bu bir soruna çok uygunsuz bir yaklaşımdır. Bu rotaya giderseniz, sadece WP önyüklemesini değiştirmediği sürece çalışacak bir çözüm oluşturuyorsunuz. Bunun yapmaya çalıştığı şeyi (kolayca) gerçekleştirmek için mevcut kancaları kullanmalısınız.
Lawrence Johnson

13

Benim gibi iseniz, bazen CMS'de bulunmayan bir sayfada WordPress işlevlerine başvurabilirsiniz. Bu şekilde, arka uca özgü kalır ve istemci tarafından yanlışlıkla silinemez.

Bu sadece wp-blog-header.phpbir PHP kullanarak dosyayı dahil ederek yapmak kolaydır require().

İşte Facebook Açık Grafik oluşturmak için bir sorgu dizesi kullanan bir örnek herhangi bir yazı için (OG) verileri .

OG verilerini oluşturmak istediğimiz bir gönderinin kimliği http://example.com/yourfilename.php?1nerede 1olduğu gibi bir bağlantı örneğini ele alalım :

Şimdi, yourfilename.phprahatlığımız için kök WordPress dizininde bulunan içeriklerde :

<?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>

İşte var: gönderinin gerçek resmini, alıntısını ve başlığını kullanarak herhangi bir yazı için paylaşım modelleri oluşturuldu!

Bunu yapmak için özel bir şablon oluşturabilir ve kalıcı bağlantı yapısını düzenleyebiliriz, ancak yalnızca bir sayfa için gerekli olduğundan ve istemcinin bunu CMS içinden silmesini istemediğimizden, bu daha temiz bir seçenek gibi görünüyordu.


2017 DÜZENLEME: Lütfen bu yaklaşımın artık kullanımdan kaldırıldığını unutmayın

2016'dan sonraki WordPress kurulumları için lütfen WordPress'e nasıl bir PHP sayfası ekleyebilirim? Bölümüne bakın. sayfa verilerinizi tarayıcıya çıkarmadan önce eklenecek ek parametreler için.



5

WordPress Temasının dışına bir PHP sayfası eklemeniz gerekiyorsa herhangi bir cevap kapsamaz. Bu yol.

Wp-load.php dosyasını eklemeniz gerekir.

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

Ardından, o sayfadaki herhangi bir WordPress işlevini kullanabilirsiniz.


Bu fikir benim için çok faydalı oldu. Ancak doğru kullanma hakkında burequire_once('wp-load.php');
yazıyı

1

Bir sayfa oluşturun, sayfam.php olarak adlandırın ve tema dizininizin altına kaydedin. Şimdi, bu php dosyasını düzenleyin ve sayfanın en üstüne aşağıdaki satırı yazın

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

PHP kodunuzu özel sayfa tanımlama satırının altına yazın, diğer WP şablonunuzu, bu dosyanın içindeki işlevleri çağırabilirsiniz.

<?php require_once("header.php");?>VEYA gibi başla

düzeni tutarlı tutmak için üstbilgi ve altbilginizi entegre edersiniz.

Bu benim sayfam olduğu için WordPress yönetici panelinden SAYFA YARATMALISINIZ. Yönetici => Sayfalar => Yeni Ekle'ye gidin

Bir sayfa başlığı ekleyin, özel sayfayı nasıl kodladığınıza bağlı olarak sayfa gövdesi (açıklama) da ekleyebilirsiniz. Özel php sayfasında yazılmışsa, açıklamayı tamamen atlayabilirsiniz.

Sağ tarafta Şablon'u seçin. Açılır listeden Özel Sayfam'ı seçin. Hepiniz hazırsınız! [Wordpress] [1] tarafından oluşturulan bilgi dosyasına (kalıcı bağlantı) gidin ve sayfaya bakın.


1

En iyi yolu WordPress PHP sayfaları eklemek için Page Templatede child-themeklasörden.

Page TemplateWordPress'de nasıl oluşturulur .

Adlı bir dosya oluşturun template-custom.phpve ekleyin /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(); ?>

Daha fazla ayrıntı için


1

WordPress'in eklenti API'sına göz atmak isteyeceksiniz.

Bu, WordPress mekaniğinin farklı bölümlerine "nasıl bağlanacağını" ve "filtrelemeyi" açıklar, böylece herhangi bir zamanda herhangi bir yerde özel PHP kodunu yürütebilirsiniz. Bu kancalama, filtreleme ve özel kod yazma işlemlerinin tümü, temanızın herhangi birinde function.php dosyanızda gerçekleştirilebilir. Mutlu kodlama :)


Gerçekten Wordpress API kendisi ile etkileşim istemiyorum - benim PHP kodu herhangi bir WP shenanigans tamamen bağımsız. Ancak harici php dosyalarına başvurmam gerekiyor. Bu durumda öğrenmem gereken şey API olduğundan emin misiniz?
rutherford

Her şey ne yapmaya çalıştığınıza bağlı. API'yi kullanmak bazı durumlarda yardımcı olabilir ve diğerleri tamamen gerekli değildir. Her şey neyi başarmaya çalıştığınıza bağlı. @ Adam'ın önerisiyle gidip sayfa şablonlarını kullanabilir veya tüm özel kodunuzu bir sepette tutabilir ve daha sonra WordPress'in farklı bölümlerine takabilirsiniz. Her şeyi söyleyebilirim, sizin için en iyisini ve neyi rahat hissettiğinizi seçin. Bu cevapların üçü de istediğinizi şu ya da bu şekilde gerçekleştirecektir.
hsatterwhite

1

WordPress API ile uğraşmak istemiyorsanız, Adam'ın cevabı gerçekten en iyisidir.

API ile uğraşmaya istekli olsaydınız, WordPress'e erişmeye devam ederken belirli bir URL'yi veya sayfayı rastgele bir PHP dosyasına yönlendirmenize izin verecek olan "şablon yönlendirme" kancasına takılmanızı öneririm.


1

Adam Hopkinson tarafından yaygın olarak kabul edilen cevap sayfa oluşturmak için tam otomatik bir yöntem değildir! Bir kullanıcının WordPress'in arka ucunda (wp-admin tire) manuel olarak bir sayfa oluşturması gerekir. Sorun şu ki, iyi bir eklentinin tam otomatik bir kurulumu olmalıdır. İstemcilerin el ile sayfa oluşturmasını gerektirmemelidir.

Ayrıca, burada yaygın olarak kabul edilen diğer cevaplardan bazıları, WordPress dışında statik bir sayfa oluşturmayı içerir; bu sayfalar daha sonra temalı üstbilgi ve altbilgiyi elde etmek için WordPress işlevlerinden yalnızca bir kısmını içerir. Bu yöntem bazı durumlarda işe yarayabilir, ancak bu, tüm işlevlerini içermeden bu sayfaları WordPress ile entegre etmeyi çok zorlaştırabilir.

Bence en iyi, tam otomatik yaklaşım kullanarak bir sayfa oluşturmak wp_insert_postve veritabanında yer almak olacaktır. Bununla ilgili bir örnek ve harika bir tartışma ve sayfanın bir kullanıcı tarafından yanlışlıkla silinmesinin nasıl önleneceği burada bulunabilir: wordpress-otomatik olarak oluşturma sayfası

Açıkçası, bu yaklaşımın bu popüler soruya bir cevap olarak belirtilmediğine şaşırdım (7 yıldır yayınlandı).


1
Yukarıdaki cevabı yazdıktan hemen sonra, kullanıcının amacının PHP'yi sayfanın içeriğine dahil edebileceğini fark ettim, bu yaklaşım açıkça buna izin vermez; PHP yalnızca içeriği oluşturmak için kullanılabilir, içeriğe dahil edilmez, dolayısıyla sayfa dinamik olarak değil statik olarak kaydedilir. Ancak, her çağrıldığında sayfayı ve içeriğini (sayfa kimliğini sağlayarak) yeniden oluşturarak sayfaya dinamik bir görünüm verebilirsiniz. Eklentiniz bunun ne zaman ve nasıl gerçekleştiğini işleyebilir, belki de $ _SERVER ["REQUEST_URI"]
Damian Green

2
Cevabınızda, kullanıcının yanlışlıkla silinmesini önlemekten bahsedersiniz. Bunu nasıl yaptın?
GJ

0

Bunu dene:

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

0

Özel bir şablon dosyası oluşturmanın ve bu şablonu bir sayfaya atamanın (kabul edilen yanıttaki örnekte olduğu gibi) yanı sıra, WordPress'in şablon yüklemek için kullandığı şablon adlandırma kuralında da (şablon hiyerarşisi) bir yol vardır.

Yeni bir sayfa oluşturun ve şablon dosya adı için o sayfanın bilgi sayfasını kullanın ( page- {slug} .php adlı bir şablon dosyası oluşturun ). WordPress, bu kurala uyan şablonu otomatik olarak yükleyecektir.


0

Sadece page-mytitle.phpgeçerli temanın klasörüne bir dosya oluşturun ve Gösterge Tablosundan bir sayfa "mytitle" .

Ardından sayfayı URL ile çağırdığınızda page-mytitle.php dosyasını göreceksiniz. Bu PHP dosyasına ( page-mytitle.php) HTML, CSS, JavaScript, wp-loop vb. Eklemelisiniz .


0

Etkin temalar klasörünüzün altına (/ wp-content / themes / your_active_theme /) gibi herhangi bir php dosyası ekleyebilir ve ardından wp-admin'den yeni sayfa ekleyebilir ve sayfa şablonu seçeneklerinden bu sayfa şablonunu seçebilirsiniz.

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

Dosyanızı function.php dosyasına dahil etmenin ve bundan kısa kod oluşturmanın bir yolu daha var ve bu kısa kodu sayfanıza böyle koyabilirsiniz.

// CODE in functions.php 

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

Ve sonra bu kısa kodu wp-admin yan sayfasında bu [abc] gibi kullanabilirsiniz .


-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

Dosyanızı "newpage.php" olarak adlandırabilirsiniz - temanızın dizinine yerleştirin wp-content. Bir sayfa şablonu yapabilirsiniz (bkz. Http://codex.wordpress.org/Pages .. ) Veya temanızdaki header.php veya single.php gibi PHP dosyalarından birine ekleyebilirsiniz.

Daha da iyisi, bir çocuk teması oluşturun ve oraya koyun, böylece tema kodunuzu yalnız bırakın ve güncellenmesi daha kolaydır.

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


Bağlantı yarıda kesildi: İki kez yönlendiriyor ve "Kendi Sayfa Şablonlarınızı Oluşturma" adlı bir alt bölüm yok . En yakın " Sayfa Şablonları " alt bölümü olabilir veya olmayabilir . Ayrı bir sayfa da var (aynı ad) Sayfa Şablonları
Peter Mortensen

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.