创建类别帖子快捷代码

时间:2016-03-12 作者:pagol

我正在尝试为我的主题创建一个短代码,而不使用插件。我试过这个http://wpgeneratetool.com/short-code/ 但我不知道如何创建。

我想创建如下内容,在这里我可以设置类别名称和每页的帖子。

示例like[categorypost cat="pant" post-per-page="5" ]

HTML输出将是标题、帖子缩略图和永久链接。

波纹管示例

<div><h1>post title</h1><a herf="permalink url"> post thumbnail</a></div>
我试过了http://wpgeneratetool.com/short-code/

function cat-post($atts){
    extract( shortcode_atts(
        array(  

        \'$category-name\' => \'$atts[\'id\']\',
        \'$post-title\' => \'get_the_title($post_id)\',
        \'$post-link\' => \'get_the_permalink($post_id)\',
        \'$post-image\' => \'get_the_post_thumbnail($post_id,  \'thumbnail\')\',
        $post-data =\'<div><a href="\'.$link.\'">\'.$image.\'<h5>\'.$title.\'</h5></a></div>\';
    return $data;

        ), $atts ) )

}
add_shortcode( \'categorypost\', \'cat-post\' );
但我知道这个代码是不正确的。

1 个回复
最合适的回答,由SO网友:majick 整理而成

需要完全重写。。。

add_shortcode( \'categorypost\', \'cat_post\' );

function cat_post( $atts ) {

    // attributes for shortcode
   if ( isset( $atts[\'cat\'] ) ) {$cats = $atts[\'cat\'];} else {return;}
   if ( isset( $atts[\'posts_per_page\'] ) ) {$posts_per_page = $atts[\'posts_per_page\'];} else {$posts_per_page = -1;}

   // get the category posts
   $category = get_category_by_slug( $cats );
   if ( !is_object( $category ) ) {return;}
   $args = array(
        \'cat\' => $category->term_id,
        \'posts_per_page\' => $posts_per_page
   );
   $posts = get_posts( $args );

   // create the list output
   if ( count( $posts ) > 0 ) {
       foreach ( $posts as $post ) {
           $link = get_permalink( $post->ID );
           $title = $post->post_title;
           $image = get_post_thumbnail( $post->ID,\'thumbnail\' );
           $output .= \'<div id="postrow-\'.$post->ID.\'" class="postrow">\';
           $output .= \'<a class="postlink" href="\'.$link.\'">\' . $image;
           $output .= \'<h5 class="posttitle">\' . $title . \'</h5></a></div>\';
       }
   }
   return $output;
}
短代码用法示例:[categorypost cat="pant" posts_per_page="5"]