5

我正在尝试在我正在处理的博客上使用类别帖子 (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 号?如果需要编辑,我在下面包含了名为“wp_cpl_shortcode.php”的插件文件的 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/

PS 我也会在 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”部分。谢谢。

4

2 回答 2

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 的大小。比尝试更改已经硬编码的插件要容易得多。

于 2012-07-18T14:52:50.053 回答
1

您可以使用 获取当前类别 ID get_the_category($post->ID);。这将为您提供您正在查看的帖子所分配的类别的 ID。

你如何显示你的插件?您是否在文件中的某处写下您的简码?如果是,请尝试do_shortcode

于 2012-07-10T19:43:28.250 回答