我正在尝试使用我正在处理的博客上的类别帖子(WP-CPL)插件来按类别过滤“最近的帖子”。基本上,当有人点击博客上的类别名称时,我希望它显示该类别的帖子。这将通过Life Is Simple模板的'archives.php'文件。
插件的短代码是:
[wp_cpl_sc cat_id=40 list_num=4 css_theme=2 sticky_post="79"]
这只是一个示例,其中'cat_id'表示插件将显示的类别。我不想只显示一个类别,我希望它在有人点击链接时显示相应的类别。如何让插件识别正在请求的类别并显示相应的帖子?
我知道类别标题是:
<?php single_cat_title(); ?>
但我如何以这种方式找到类别ID号?如果需要编辑,我已经将PHP包含在下面标题为'wp_cpl_shortcode.php'的插件文件中。为了简单起见,我宁愿在网站的实际编码中使用短代码。
<?php
/**
* shortcode
* The library of shortcode class
* @author Swashata <swashata4u@gmail.com>
* @subpackage WP Category Post List Plugin
* @version 2.0.0
*/
/**
* The WP CPL shorttag support
* @since 1.1.0
* This was started from the version 1.1.0 and was finished by 2.0.0
*/
class itgdb_wp_cpl_shortcode {
/**
* The wp_cpl_shortcode_handler function
* This function is responsible for converting shortcodes into dynamic contents
* @package WordPress
* @subpackage WordPress Category Post List plugin
* @since 1.1.0
* @param array $atts The attributes passed through the shortcode
* @param string $content The string passed through the shortcode. Used for generating title
* @return string The modified content
*/
public function wp_cpl_shortcode_handler($atts, $content = null) {
/** first extract the attributes */
$op = shortcode_atts(array(
'cat_id' => 1,
'css_theme' => 0,
'is_thumb' => 'true',
'list_num' => 10,
'show_comments' => 'true',
'sort_using' => 1,
'sort_order' => 'asc',
'exclude_post' => '',
'sticky_post' => '',
'show_date' => 'true',
'show_author' => 'true',
'show_excerpt' => 'true',
'excerpt_length' => 150,
'optional_excerpt' => 'false',
'read_more' => __('Continue Reading', itgdb_wp_cpl_loader::$text_domain),
), $atts);
/** Sanitize some of the user datas */
$cat_id = (int) $op['cat_id'];
$i = 0;
/** Done, now the main thing */
include_once itgdb_wp_cpl_loader::$abs_path . '/includes/wp_cpl_output_gen.php';
$output_gen = new itgdb_wp_cpl_output_gen();
return $output_gen->shortcode_output_gen($op);
}
}
对不起,如果这个问题被定罪,我还在学习,并认为我今天扭曲了脑子。谢谢你的帮助!
插件页面在这里:
http://wordpress.org/extend/plugins/wp-category-posts-list/
P.S。我也会在wordpress.stackexchange.com上发布这个,我想也许这也是一个很好的PHP编码问题,也可以在这个论坛上提问。
我尝试了几件事。
第一名:
<?php $categoryid = get_the_category($post->ID);
echo do_shortcode( '[wp_cpl_sc cat_id=".$categoryid." list_num=4 css_theme=2 sticky_post="79"]');
?>
这没有做任何事情。它只显示了前四个帖子。
第二个(我在WordPress中发现了一个不同的PHP函数):
<?php $category_current = get_query_var($cat);
echo do_shortcode('[wp_cpl_sc cat_id="$category_current" list_num=4 css_theme=2 sticky_post="79"]');
?>
我从这里开始这个想法http://www.wpsite.net/how-to-get-category-id-current-category/。我也尝试过它作为get_query_var('cat'),就像它在网站上说的那样但是也没有用。我接近了吗?这是语法上的一个小问题吗?基本上只需要获取当前类别ID号并将其传递到短代码的“cat_id”部分。感谢。
答案 0 :(得分:1)
您可以使用get_the_category($post->ID);
获取当前类别ID。这将为您提供您正在查看的帖子的类别ID。
如何显示插件?你在文件的某处写了你的短代码吗?如果是,请尝试do_shortcode。
答案 1 :(得分:1)
有一种更简单的方法来做我想要做的事情(对于将来看这篇文章的所有人)。我只是通过PHP动态调用博客中的不同元素。我首先这样设置:
<?php
global $post;
$category = get_the_category($post->ID);
$category = $category[0]->cat_ID;
$myposts = get_posts(array('numberposts' => 5, 'offset' => 0, 'category__in' => array($category), 'post__not_in' => array($post->ID),'post_status'=>'publish'));
foreach($myposts as $post) :
setup_postdata($post);
?>
然后要调用的不同元素是缩略图:
<?php the_post_thumbnail(); ?>
您还可以像这样调整缩略图的大小:
<?php set_post_thumbnail_size( 300, 300 ); ?>
标题:
<?php the_title(); ?>
摘录:
<?php the_excerpt(); ?>
它们可以通过在div中包含这些元素来设置样式,并通过样式设置div的大小。比试图更改已经硬编码的插件容易得多。