it-swarm.com.de

Warum funktioniert es nicht, eine Datei in die functions.php des Themas aufzunehmen?

Wenn ich zum Beispiel Code in die functions.php meines Themes schreibe (z. B. einen benutzerdefinierten Post-Typ oder etwas hinzufügen), funktioniert das einwandfrei. Wenn ich es in eine neue Datei verschiebe, funktioniert die Datei in der Datei functions.php meines Themas include() nicht mehr (aber der Debug-Code mit error_log() funktioniert immer noch.

z.B.

Hier ist die functions.php:

<?php
// ###### functions.php ######
error_log("fu_debug: Including the post type.");

add_action('init', 'fu_create_project_post_type');
function fu_create_project_post_type() {
    error_log("fu_debug: create project post type");

    register_post_type( 'fu_project',
        array(
            'labels' => array(
                'name' => __( 'Projects' ),
                'singular_name' => __( 'Project' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'projects'),
        )
    );
}
?>

Das funktioniert gut. Nun, wenn ich die functions.php so ändere:

<?php
// ###### functions.php ######
include "newfile.php";
?>

und füge den Code in newfile.php so ein:

<?php
// ###### newfile.php ######
error_log("fu_debug: Including the post type.");

add_action('init', 'fu_create_project_post_type');
function fu_create_project_post_type() {
    error_log("fu_debug: create project post type");

    register_post_type( 'fu_project',
        array(
            'labels' => array(
                'name' => __( 'Projects' ),
                'singular_name' => __( 'Project' )
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array('slug' => 'projects'),
        )
    );
}
?>

der Code funktioniert nicht mehr, aber die Fehlermeldung error_log () wird weiterhin in den Protokollen angezeigt.

Warum funktioniert die Fehlermeldung immer noch, der WordPress-Code jedoch nicht?

3
trusktr

Wenn Sie Dateien in functions.php aufnehmen, müssen Sie mit get_template_directory() auf den richtigen Dateipfad verweisen:

include( get_template_directory() . '/newfile.php' );
5
Chip Bennett