我正在使用CiviCRM WordPress的插件,并在插件的主文件中,civicrm.php
, 它调用add_action()
将函数添加到wp_head()
要将CiviCRM的标题与my theme的标题合并,请执行以下操作:
add_action( \'wp_head\', array( $this, \'wp_head\' ) );
civicrm中的实际功能。php如下所示:
public function wp_head() {
echo "calling wp_head"; //added by me to test if the code gets called
// CRM-11823 - If Civi bootstrapped, then merge its HTML header with the CMS\'s header
global $civicrm_root;
if ( empty( $civicrm_root ) ) {
return;
}
$region = CRM_Core_Region::instance(\'html-header\', FALSE);
if ( $region ) {
echo \'<!-- CiviCRM html header -->\';
echo $region->render( \'\' );
}
}
我已经确认,当我切换到第215个主题时,会调用该代码,但是是基于我的自定义主题(它基于
Roots), 无法调用此代码。我还确认,我的自定义主题实际上是调用主WordPress
wp_head()
作用
关于我的自定义主题中可能出现的问题的任何想法都会导致此自定义wp_head
钩子不被调用或以某种方式出错?
最合适的回答,由SO网友:Nick Tiberi 整理而成
我发现了问题:
CiviCRM在中应用模板时civicrm.basepage.php
, $page_template
回来的时候page.php
, 但我的基本模板实际上被命名为base.php
.
我在主题的初始化中添加了以下代码,解决了问题:
add_filter( \'civicrm_basepage_template\', \'psca_civicrm_basepage_template\' );
function psca_civicrm_basepage_template( $template ) {
return \'base.php\';
}