Я использую «константы» много. Я устанавливаю их в functions.php как define('mytheme_town', 'Orlando');
а затем вызовите их в тему <?php echo mytheme_town ; ?>
<?php echo mytheme_town ; ?>
.
Это просто и легко. Но мне нужно, чтобы они были специфичными для сайта (для нескольких пользователей), поэтому я подумал, что можно добавить текущий blog_id к вызову темы и объявить константы для каждого MultiSite в functions.php? Я не знаю, как это кодировать, но чего я пытаюсь достичь в файле темы … <?php echo [current_blog]_mytheme_town ; ?>
<?php echo [current_blog]_mytheme_town ; ?>
…..
Например
В functions.php // устанавливаем константы для всех мультисайтов, которые используют эту тему
// awebsite.org: site_id = 1
define ('1_mytheme_town', 'Orlando');
define ('1_mytheme_subject', 'food');
define ('1_mytheme_p1', 'Это текст первого абзаца');
// adifferentsite.com: site_id = 2
define ('2_mytheme_town', 'New York');
define ('2_mytheme_subject', 'wine');
define ('2_mytheme_p1', 'Это текст первого абзаца');
// anothersite.net: site_id = 3 define ('3_mytheme_town', 'LA');
define ('3_mytheme_subject', 'Donuts');
define ('3_mytheme_p1', 'Это текст первого абзаца');
В файлах темы Вызовите константы, используя текущий blog_id, например …
<?php echo [current_blog]_mytheme_town ; ?>
<?php echo [current_blog]_mytheme_subject ; ?>
<?php echo [current_blog]_mytheme_p1 ; ?>
Я пробовал весь день, но я просто догадываюсь, и я действительно не знаю, что делаю. Все, что я пробовал, работает, но он просто выводит текст кода
1_mytheme_town
а не константу, определенную в functions.php.
Надеюсь, вы понимаете, что я пытаюсь объяснить.
Вы можете получить доступ к идентификатору блога, на котором вы находитесь, global $blog_id;
и тогда вы можете использовать это, как вы хотите, чтобы он работал.
Использование констант в том, как вы делаете, очень не то, как код хорошего программиста WordPress будет кодировать. Константы очень негибкие и просто не так, как обычно делаются в WordPress.
Предполагая, что, когда вы ссылаетесь на «сайт», вы действительно имеете в виду «блог» в многоязычном языке WordPress (да, я думаю, что терминология странная, но это то, что она есть), то почему бы не использовать get_blog_option()
и update_blog_option()
вместе с get_site_option()
и update_site_option()
? (этот код входит в файл functions.php
вашего основного блога или в .php
файл плагина «должен использовать», который вы можете разрабатывать):
add_action('init','yoursite_init'); function yoursite_init() { if (!get_site_option('town_subject_p1_initialized')) { update_blog_option(1,'town','Orlando'); update_blog_option(1,'subject','food'); update_blog_option(1,'p1','This is the first paragraph text'); update_blog_option(2,'town','New York'); update_blog_option(2,'subject','wine'); update_blog_option(2,'p1','This is the first paragraph text'); update_blog_option(3,'town','LA'); update_blog_option(3,'subject','donuts'); update_blog_option(3,'p1','This is the first paragraph text'); update_site_option('town_subject_p1_initialized',true); } }
Затем для доступа к вашей теме используйте следующий код:
<?php echo get_blog_option($blog_id,'town'); ?> <?php echo get_blog_option($blog_id,'subject'); ?> <?php echo get_blog_option($blog_id,'p1'); ?>
Это намного больше «WordPress-like», и вы обнаружите, что он намного более гибкий, а кто-то другой, кто знает, что WordPress гораздо более правдоподобно для понимания кода, который вы оставляете.
Основываясь на комментариях, я собираюсь предложить другой подход для инициализации. Вместо того, чтобы программист постоянно редактировал файл .PHP каждый раз, когда он хочет добавить новый сайт, мета-сайт сайта должен быть добавлен с помощью крюка 'wpmu_new_blog'
который вы можете увидеть здесь:
add_action('wpmu_new_blog','getsunrise_wpmu_new_blog'); function getsunrise_wpmu_new_blog( $blog_id ) { update_blog_option( $blog_id,'town','Pending...'); update_blog_option( $blog_id,'subject','Pending...'); update_blog_option( $blog_id,'p1','Pending...'); }
Затем администратор сайта может редактировать метафайл сайта по этому URL / /wp-admin/network/site-settings.php?id={$site_ID}
{$site_ID} ( /wp-admin/network/site-settings.php?id={$site_ID}
заменяя {$ site_ID} новым сайтом #.) Например:
Прокрутите вниз до нижней части этой страницы, а затем вы увидите три (3) новых значения метаданных сайта:
Это гораздо лучший способ использования констант и редактирования файла .php
. Ваши клиенты не будут знать, но подсознательно они будут благодарить вас за то, что не причинили им будущих головных болей.