如何制作可重复使用的WordPress功能?

时间:2014-09-09 17:31:05

标签: php wordpress

我有一个生成相关帖子列表的例程,打算在single.php中使用:

  //for use in the loop, list 5 post titles related to first tag on current post
  $tags = wp_get_post_tags($post->ID);
  if ($tags) {
      echo 'Related Posts';
      $first_tag = $tags[0]->term_id;
      $args=array(
        'tag__in' => array($first_tag),
        'post__not_in' => array($post->ID),
        'showposts'=>5,
        'caller_get_posts'=>1
       );
      $my_query = new WP_Query($args);
      if( $my_query->have_posts() ) {
        while ($my_query->have_posts()) : $my_query->the_post(); ?>
          <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a>

          <?php
        endwhile;
      }
    wp_reset_query();
   }

我需要做些什么才能将它添加到function.php中,以便我可以在WordPress帖子编辑器中调用此函数?

1 个答案:

答案 0 :(得分:1)

由于$post变量在WP中是全局变量,因此您只需执行以下操作:

function doStuff()
{
    global $post;

    $tags = wp_get_post_tags($post->ID);
    if ($tags) {
    echo 'Related Posts';
    $first_tag = $tags[0]->term_id;
    $args=array(
        'tag__in' => array($first_tag),
        'post__not_in' => array($post->ID),
        'showposts'=>5,
        'caller_get_posts'=>1
    );
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
        while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a>

        <?php
        endwhile;
    }
    wp_reset_query();
    }
}

现在您只需将<?php doStuff() ?>放入模板即可。

但请注意,使用$post的功能只能在“The Loop”内使用。