web-dev-qa-db-fra.com

Pourquoi l'inclusion d'un fichier dans le functions.php de theme ne fonctionne pas?

Par exemple, si j’écris du code (par exemple, ajouter un type de publication personnalisé ou quelque chose de ce genre) dans le fichier functions.php de mon thème, cela fonctionne correctement. Si je le déplace dans un nouveau fichier, alors include() le fichier dans le fichier functions.php de mon thème, cela ne fonctionne plus (mais le code de débogage utilisant error_log() fonctionne toujours.

par exemple.

Voici 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'),
        )
    );
}
?>

Cela fonctionne bien. Maintenant, si je change le fichier functions.php en ceci:

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

et mettez le code dans newfile.php comme ceci:

<?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'),
        )
    );
}
?>

le code ne fonctionne plus, mais le message error_log () apparaît toujours dans les journaux.

Pourquoi le message d'erreur fonctionne-t-il toujours, mais pas le code wordpress?

3
trusktr

Lorsque vous incluez des fichiers dans functions.php, vous devez référencer le chemin de fichier correct, à l'aide de get_template_directory():

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

Cela nous ramènera au thème PARENT:
require_once( get_template_directory() . '/include/myscript.php' );

Si vous utilisez un thème ENFANT (et vous devriez!), Utilisez ceci:
require_once( get_stylesheet_directory() . '/include/myscript.php' );

0
bshea