如何制作wordpress短代码

时间:2016-12-24 07:53:04

标签: wordpress wordpress-theming shortcode

我有这个代码来显示他们的第一篇文章的所有类别和缩略图。

<?php $recent = new WP_Query(); ?>
<?php $recent->query( 'cat=1&showposts=5' ); ?>
<?php $is_first_post = true; ?>
<?php while( $recent->have_posts() ) : $recent->the_post(); ?>
    <ul>
      <li>
      <?php 
      if ( $is_first_post  && has_post_thumbnail() ) {
        the_post_thumbnail(); 
        $is_first_post = false; 
        }
        ?>
        <a href="<?php the_permalink(); ?>">
        <?php the_title(); ?>
        </a>
      </li>
    </ul>
<?php endwhile; ?>

但我希望使用shortcode.which使用category&amp;邮编 但我不能做短代码

4 个答案:

答案 0 :(得分:0)

短代码是PHP函数。您需要一个接受所有参数的函数。例如 -

class djangoLetterTypes(models.Model):
    id = models.AutoField(db_column='ID',primary_key=True)
    letterBackgroundBase = models.CharField(db_column='LETTER_BACKGROUND_BASE',max_length=60,null=False,blank=False)
    name = models.CharField(db_column='NAME',max_length=50,null=False,blank=False)
    letterCode = models.IntegerField(db_column='LETTERCODE',max_length=50,null=False,blank=False,unique=True)
    class Meta:
        managed = True
        db_table = 'djangoLetterTypes'

    def __str__(self):
        return self.name

class djangoLetters(models.Model):
    id = models.AutoField(db_column='ID',primary_key=True)
    letterType = models.ForeignKey(djangoLetterTypes,db_column='letterType',to_field='letterCode')
    class Meta:
        managed = True
        db_table = 'djangoPDFLetters'

您的短代码将如下所示 -

function get_posts($atts) {
  extract( shortcode_atts( array(
    'cat_id' => 'cat_id',
    'num_posts' => 'num_posts'
  ), $atts ) );

  $loop = array(
    'cat' => $cat_id,
    'posts_per_page' => $num_posts
  );

  if ( $loop->have_posts() ) :
    while ( $loop->have_posts() ) : $loop->the_post();
      // YOUR CODE HERE
    endwhile;
  endif;
}

add_shortcode( 'getposts', 'get_posts' );

此代码尚未经过测试,但这几乎就是您的工作方式

答案 1 :(得分:0)

首先,您只需更改您的功能名称。

在wordpress中,get_posts()是一个函数,因此您没有创建自定义函数的相同名称。

https://developer.wordpress.org/reference/functions/get_posts/

答案 2 :(得分:0)

在function.php中添加此代码 这是你的短代码&#34; [my_form_shortcode cat =&#34; 1&#34; showposts =&#34; 5&#34;]&#34;

function my_form_shortcode($atts) {
 ob_start();
 $atts = shortcode_atts(
 array(
        'cat' => '1',
        'showposts' => '5',
 ), $atts, 'my_form_shortcode' );

//YOUR CODE START

 $recent = new WP_Query(); 
 $query = "cat=".$atts['cat']."&showposts=".$atts['showposts'];
 $recent->query( $query ); 
 $is_first_post = true; 
 while( $recent->have_posts() ) : $recent->the_post(); ?>
<ul>
  <li>
  <?php 
   if ( $is_first_post  && has_post_thumbnail() ) {
    the_post_thumbnail(); 
    $is_first_post = false; 
   }
  ?>
  <a href="<?php the_permalink(); ?>">
  <?php the_title(); ?>
  </a>
 </li>
 </ul>
 <?php endwhile; 
 //YOUR CODE END

 return ob_get_clean(); 
 }

add_shortcode( 'my_form_shortcode', 'my_form_shortcode' );

答案 3 :(得分:0)

keys = set().union(*lst)
for d in lst:
    for k in keys:
        d.setdefault(k, '')

http://www.codexwp.com/issues/how-to-create-shortcode-in-wordpress/