it-swarm.com.de

Überschreiben von Konstanten im untergeordneten Thema

Ich habe ein übergeordnetes Thema, das diese Konstante in function.php: deklariert.

define("THEME_DIR", get_template_directory());
define("THEME_DIR_URI", get_template_directory_uri());
define("THEME_NAME", "BARNELLI");
define("THEME_STYLES", THEME_DIR_URI . "/css");
define("THEME_INCLUDES", THEME_DIR . "/includes");
define("THEME_POST_TYPES", THEME_DIR . "/includes/post-types");
define("THEME_INCLUDES_URI", THEME_DIR_URI . "/includes");
define("THEME_FONTS", THEME_DIR_URI . "/font-awesome");

ich muss einige Dateien im Verzeichnis includes ändern und die Verzeichnisstruktur (einschließlich Dateien) kopieren.

Wie ich in der Codex-Dokumentation gelesen habe, wird function.php im untergeordneten Design vor der gleichen Datei im übergeordneten Design geladen und nur die Dateien im Stammverzeichnis des übergeordneten Designs können im untergeordneten Design überschrieben werden.

Wenn ich eine geänderte Konstante im function.php des Kindes deklariere, wird der function.php des Elternteils überschrieben, und wenn ich eine enthaltene Datei in das untergeordnete Themenverzeichnis kopiere (und ändere), funktioniert dies nicht.

Was schlagen Sie vor, um dieses Problem zu lösen?

2
fromthestone

Konstanten können nicht so einfach neu definiert werden.

https://stackoverflow.com/questions/8465155/redefine-constants-in-php

Daher werden die Konstanten von untergeordneten Themen anstelle der Konstanten von übergeordneten Themen verwendet. Es wird zwar eine Warnung angezeigt, dies sollte jedoch kein Problem darstellen, wenn Sie die Warnung deaktivieren.

Sie sollten Konstanten wie diese hinzufügen, wenn Sie keine Warnung wünschen:

if ( !defined('CONSTANT') )
    define('CONSTANT', 'constant_value');

BEARBEITEN:

Einfache Antwort, füge Konstanten in den functions.php deines Child-Themas ein und er wird verwendet, wenn du diese Konstanten verwendest.

Umfassende Antwort: Warum haben Sie überhaupt die Mühe, die CONSTANTS zu ändern? CONSTANTS sollten nicht geändert werden. Sie können eigene Konstantensätze für Ihr untergeordnetes Thema erstellen. Wenn ich Sie wäre, würde ich Folgendes in den functions.php des Child-Themas einfügen und diese neuen Konstanten verwenden, wann immer dies erforderlich ist.

define("CHILD_THEME_DIR", get_stylesheet_directory());
define("CHILD_THEME_DIR_URI", get_stylesheet_directory_uri());
define("CHILD_THEME_NAME", "BARNELLI-CHILD");
define("CHILD_THEME_STYLES", CHILD_THEME_DIR_URI . "/css");
define("CHILD_THEME_INCLUDES", CHILD_THEME_DIR . "/includes");
define("CHILD_THEME_POST_TYPES", CHILD_THEME_DIR . "/includes/post-types");
define("CHILD_THEME_INCLUDES_URI", CHILD_THEME_DIR_URI . "/includes");
define("CHILD_THEME_FONTS", CHILD_THEME_DIR_URI . "/font-awesome");

Da das übergeordnete Thema bereits die Konstanten deklariert, gilt die Antwort von @ toscho nicht für Ihren Fall.

1
sakibmoon