如何将BLOG_ID附加到...ECHO[函数-定义-常量]?

时间:2011-03-28 作者:TheLoneCuber

我经常使用“常量”。我在函数中设置它们。类似phpdefine(\'mytheme_town\', \'Orlando\'); 然后让他们进入主题<?php echo mytheme_town ; ?>.

这很简单,也很容易。但是我需要它们是特定于站点的(对于多站点),所以我认为可以将当前blog\\u id附加到主题调用中,并在函数中为每个多站点声明常量。php?我不知道如何编码,但我想在这个主题文件中实现什么。。。<?php echo [current_blog]_mytheme_town ; ?> .....

例如

In functions.php// 为使用此主题的所有多站点设置常量

//阿威伯斯特。org:site\\u id=1定义(\'1\\u mytheme\\u town,\'奥兰多\')
定义(\'1\\u mytheme\\u subject\',\'food\')
定义(\'1\\u mytheme\\u p1\',\'这是第一段文本\');

//A差异站点。com:site\\u id=2定义(\'2\\u mytheme\\u town,\'纽约\')
定义(\'2\\u mytheme\\u subject\',\'wine\')
定义(\'2\\u mytheme\\u p1\',\'这是第一段文本\');

//另一个站点。net:site\\u id=3 define(\'3\\u mytheme\\u town,\'LA\')
定义(\'3\\u mytheme\\u subject\',\'Donuts\')
定义(\'3\\u mytheme\\u p1\',\'这是第一段文字\');

In theme files使用当前blog\\u id调用常量,如。。。

<?php echo [current_blog]_mytheme_town ; ?>
<?php echo [current_blog]_mytheme_subject ; ?>
<?php echo [current_blog]_mytheme_p1 ; ?>

我已经试了一整天了,但我只是猜测,我真的不知道我在做什么。我尝试过的所有方法都有效,但它只是呼应了代码的文本

1\\u Mysteme\\u镇

而不是函数中定义的常数。php。

希望你理解我想解释的内容。

2 个回复
最合适的回答,由SO网友:Ashfame 整理而成

您可以通过访问您所在的博客IDglobal $blog_id; 然后你可以按照你的意愿来使用它。

SO网友:MikeSchinkel

以您目前的方式使用常量与优秀的WordPress程序员编写代码的方式截然不同。常量是非常不灵活的,只是不像WordPress中通常所做的那样。

假设当你提到;“现场”英寸WordPress\' Multisite vernacular (是的,我认为这个术语很奇怪,但事实就是这样)那么为什么不使用get_blog_option()update_blog_option() 随着get_site_option()update_site_option()? (此代码位于主博客的主题中functions.php 文件,或在.php a的文件"must use" plugin 您可能正在开发):

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的“

根据评论更新,我将建议一种不同的初始化方法。而不是让程序员不断编辑。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\\u ID}替换为新站点#。)例如:

Screenshot of editing blog-specific settings in WordPress Multisite

向下滚动到该页面的底部,然后您会看到三(3)个新的站点元值:

Screenshot of editing blog-specific additional site meta in WordPress Multisite

这是一个much 使用常量和编辑.php 文件你的客户不会知道,但他们会下意识地感谢你没有给他们带来未来的麻烦。

结束

相关推荐

导入到WordPress MultiSite时禁用HTML过滤

我正在迁移到WordPress多站点实例的许多站点都在帖子中嵌入了视频和iFrame。我宁愿禁用WordPress功能,在导入时去掉嵌入的内容,而不是将每篇文章转换为犹太教式的视频嵌入方式。编辑帖子时禁用剥离是as simple as disabling the kses filter. 不幸的是,我不知道导入帖子需要禁用什么。目前我怀疑wp\\u insert\\u post()方法,但没有缩小过滤器的范围。有什么想法吗?Update: 这是特定于WordPress Multisite的。导入到单个Wo