已将添加操作添加到wp_head,但未调用

时间:2015-09-12 作者:Nick Tiberi

我正在使用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), 无法调用此代码。我还确认,我的自定义主题实际上是调用主WordPresswp_head() 作用

关于我的自定义主题中可能出现的问题的任何想法都会导致此自定义wp_head 钩子不被调用或以某种方式出错?

2 个回复
最合适的回答,由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\';
}

SO网友:MD MUSA

我们可以用不同的方式思考垃圾吗:

add_action(\'wp_head\',\'new_wp_head\');
function new_wp_head() {
  echo "calling wp_head"; 
  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( \'\' );
  }
}
确保你把这个放在哪个文件中,并且它与你的主题或插件挂钩。

相关推荐

从unctions.php调用的Add_Actions未返回好值

我正试图通过这些功能为我的网站添加一些安全/访问防护。php。然而,每当我尝试通过函数添加时。php(而不是作为插件,我以前做过)失败(总是返回false)。例如:add_action(\"parse_query\", checkaccess()); // in functions.php 以及function checkaccess() { $allowAccess = false; if(is_admin()||is_front_page()||i