2016-08-08 17 views
0

Also ich bin super neu in Wordpress. Ich habe gestern einen lokalen Wordpress-Server auf MAMP eingerichtet und versuche gerade, ein eigenes Thema zu erstellen. Problem ist, wenn ich versuche, the loop zu tun, bekomme ich keinen Inhalt. mein Code funktioniert, wenn ich nur PHP, aber das Problem ist benutzerdefinierte Wordpress-Funktionen sind nicht verwendbar (d. h. have_posts())Wordpress-Funktionen funktionieren nicht in benutzerdefinierten Thema

Ein paar andere Beiträge haben vorgeschlagen, erfordern wp-blog-header, aber das hat auch nicht funktioniert. Hier ist mein Code:

<?php 

define('WP_USE_THEMES', false); 
require('../../../wp-blog-header.php'); 

if(have_posts()) : 
    echo 'testing' 

else : 
    echo 'testing' 
endif; 


?> 

Nichts wird derzeit auf meinem Bildschirm angezeigt.

wp-blog-header.php befindet sich hier: wordpress -> wp-blog-header.php

Mein eigenes Thema befindet sich hier: wordpress -> wp-content -> themes -> firstTheme -> index.php

Alle Tipps sind willkommen.

Antwort

1

Nun, Sie schreiben PHP und Ihr Code enthält

if(have_posts()) : 
    echo 'testing' 
else : 
    echo 'testing' 
endif; 

Ich bin nicht sicher, wie dies in PHP gültig sein kann. Ich würde erwarten

if(have_posts()) 
    echo 'testing'; 
else 
    echo 'testing'; 

Siehe auch if und else Syntax in PHP.

+0

Dies funktioniert. Vielen Dank! – user5854440

0

Sie müssen die richtigen WordPress-Funktionen verwenden, um Ihr eigenes benutzerdefiniertes Thema zu erstellen. Zum Beispiel, statt require und dann x-Pfad tief (was auch aus WP-Core-Perspektive nicht gewünscht ist) sollten Sie Ihre Datei in den Stamm Ihres Themes setzen. mögen:

`get_template_part('name-of-file-to-include-without-php-ending');` 

Grund hierfür ist die Tatsache, dass Wordpress Codex den Einsatz von Kindern Thema Funktionen schlägt.

Die Funktion get_template_part(''); führt einige Überprüfungen durch, z. Wenn ein untergeordnetes Thema installiert wurde usw.

Frage: Warum definieren Sie diese Konstante?

Alle Konstanten sollten innerhalb von wp-config (Stammordner) liegen.

Darüber hinaus ist es erwähnenswert, dass Sie nicht die Posts durchlaufen. Dein Code sieht zu diesem Zeitpunkt des Schreibens nur dann aus, WENN es Posts gibt, und tut dann nichts. Sie müssen auch die Funktion while hinzufügen, um Ihre Beiträge zu bearbeiten und anzuzeigen.

Also, (in Ihrem loop.php oder an dem Ort, in Ihrem Thema, wo man sie angezeigt werden soll):

<?php if(have_posts()) : ?> 
    // The while added 
    <?php while (have_posts()) : the_post(); ?> 

     // Your template tags here: e.g. the_author(); 
     <h2><?php the_author(); ?></h2> 
     <h3>the_title();</h3> 
     etc... 
    <?php endwhile?> 
<?php endif; ?> 

Eine letzte Sache: Wordpress hat einige Konventionen, die Dateien in der residieren sollten Themenordner. Zum Beispiel sollte jedes Thema eine haben, wo Sie Sachen wie Menü und Widgets etc. hineinlegen.

Die beliebtesten Tags ein Thema zu bauen sind:

get_header(); 

Sicher, Sie eine header.php Datei in Ihrem Thema haben müssen. Auch hier wird WordPress genau nach diesen Dateien suchen, keine anderen Namen sind erlaubt.

get_footer(); 

Machen Sie eine Vermutung, nicht wahr - es ist für footer.php im Theme-Ordner suchen.

Weitere Informationen finden Sie im WordPress Codex> Vorlagen Teile, etc ..

Ich rate Ihnen dringend, die WordPress-Kernfunktionen für Vorlagen zu verwenden, sie zu ignorieren und 'klassische' PHP, z. include/require wird dir die dunkle Seite zeigen und nicht erfolgreich sein.

Ein gutes Plugin in der Sie sehen, welche Vorlage Teile Sie verwenden, ist "Was die Datei". Besorgen Sie sich ein Standardthema, installieren Sie dieses Plugin und schauen Sie in der Admin-Leiste nach, was es verspricht, um eine Vorstellung davon zu bekommen, was WordPress macht.

Hier ist ein Auszug aus meiner Schleife, in meinem Thema, die Bootstrap verwendet.

<?php if(have_posts()) : ?> 
<?php while (have_posts()) : the_post(); ?> 
<?php if(is_front_page() || is_page() || is_single()) : ?> 
     <div class="row row-content"> 
      <div class="content col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
       <?php the_content(); ?> 
      </div> 
     </div> 
    <?php // category.php, archive.php, search.php ?> 
    <?php elseif(is_category() || is_archive() || is_search()) : ?> 
     <div class="row row-excerpt"> 
      <div class="thumbnail-box col-lg-4"> 
      <a href="<?php the_permalink(); ?>" class="preview-image-link"> 

       <?php 
        // Thumbnail und Post Auszug 
        if(has_post_thumbnail()) { 
         the_post_thumbnail('thumbnail'); 
        } 
       ?> 
       </a> 
      </div> 
      <div class="text-details-box col-lg-8"> 
       <div class="row row-excerpt-text"> 
        <div class="excerpt col-lg-12"> 
         <?php the_excerpt(); ?> 
        </div> 
       </div> 
       <div class="row row-tags row-read-more"> 
        <div class="tags col-lg-8"> 
         <?php the_tags('<ul class="tag-list"> 

        </div> 
        <div class="read-more-boxcol-md-4 col-lg-4"> 
         <a href="<?php the_permalink(); ?>" class="read-more-btn"> 
          <span class="read-more-btn-text">></span> 
         </a> 
        </div> 
       </div> 
      </div> 
     </div> 
     <?php endwhile; ?> 
<?php endif; ?> 
0

Ich fand dieses Problem auch beim Aufbau ein paar Wordpress-Sites. Nach der Installation eines PhP-Plugins (Insert PhP) wurden meine Probleme gelöst.

Einmal installiert, wurde zu [insert_php] und [/ insert_php] geändert und mein Code funktionierte.