如何在WP模板中调用插件中的函数?

时间:2010-09-23 18:36:03

标签: wordpress wordpress-plugin

我已经创建了一个日历插件,现在我想在我的一个模板中显示一个事件列表。 我现在使用的代码是:

include_once(WP_CAL_PLUGIN_DIR.'eventcal.class.php');

$calendar = new EventCalendar();
$events = $calendar->getMultipleEvents('5');

(...)

<table>
<?php foreach($events as $event) : ?>
  <tr>
    <td><span><?php echo $calendar->formatEventTime($event->startTime,'dm'); ?></span></td>
    <td><span><?php echo $calendar->formatEventTime($event->startTime,'time'); ?></span></td>
    <td><?php echo $event->name; ?></td>
  </tr>
<?php endforeach; ?>
</table>

有没有办法在我的插件中调用函数而不必包含WP插件并创建新的类实例?

2 个答案:

答案 0 :(得分:8)

要在模板中执行短代码,请使用函数do_shortcode('[my-shortcode-handle]')。您的短代码需要像普通代码(see WordPress codex on shortcode API)一样注册,然后才能在模板中使用它。任何属性,内部内容等也应该在那里。

echo do_shortcode( '[my-shortcode foo="bar"]Shortcode content[/my-shortcode]' );

另外,请记住回显返回(或至少将其分配给变量),因为它只返回短代码的输出。

答案 1 :(得分:2)

来自:http://codex.wordpress.org/Plugin_API

WordPress提供了钩子,允许你的插件“挂钩”其余的WordPress;也就是说,在特定时间调用插件中的函数,从而将插件设置为动态。有两种钩子:

  1. 操作:操作是WordPress核心在执行期间或特定事件发生时在特定点启动的挂钩。您的插件可以使用Action API指定在这些点上执行其一个或多个PHP函数。
  2. 过滤器:过滤器是WordPress在将数据添加到数据库或将其发送到浏览器屏幕之前启动以修改各种类型文本的挂钩。您的插件可以使用Filter API指定执行其一个或多个PHP函数以在这些时间修改特定类型的文本。

    操作

  3. 操作由WordPress中发生的特定事件触发,例如发布帖子,更改主题或显示管理面板的页面。您的插件可以通过执行PHP函数来响应事件,该函数可能执行以下一项或多项操作:

    * Modify database data
    * Send an email message
    * Modify what is displayed in the browser screen (admin or end-user) 
    

    实现这一目标的基本步骤(下面将详细介绍)包括:

    1. 在插件文件中创建应在事件发生时执行的PHP函数。
    2. 通过调用add_action()
    3. 挂钩到WordPress中的操作
    4. 将您的PHP函数放入插件文件中,然后激活它。
    5. 实施例

      function email_friends($post_ID)  {
          $friends = 'bob@example.org,susie@example.org';
          mail($friends, "sally's blog updated", 
            'I just put something on my blog: http://blog.example.com');
          return $post_ID;
      }
      

      挂钩到WordPress

      定义函数后,下一步是“挂钩”或使用WordPress注册它。为此,请在插件文件的全局执行空间中调用add_action():

      add_action ( 'hook_name', 'your_function_name', [priority], [accepted_args] );
      

      其中:

      hook_name     WordPress提供的动作钩子的名称,它告诉您的功能应该与哪个事件相关联。 your_function_name     要在hook_name指定的事件之后执行的函数的名称。这可以是标准的php函数,WordPress核心中存在的函数,或者您在插件文件中定义的函数(例如上面定义的'email_friends')。 优先     一个可选的整数参数,可用于指定与特定操作关联的函数的执行顺序(默认值:10)。较低的数字与先前的执行相对应,具有相同优先级的函数按照它们添加到操作的顺序执行。 accepted_args     一个可选的整数参数,用于定义函数可以接受多少个参数(默认值为1),这很有用,因为一些钩子可以将多个参数传递给函数。此参数是1.5.1版中的新增内容。

      在上面的示例中,我们将以下行放在插件文件中:

      add_action ( 'publish_post', 'email_friends' );