5

作業中のブログでCategoryPosts(WP-CPL)プラグインを使用して、「最近の投稿」をカテゴリでフィルタリングしようとしています。基本的に、誰かがブログのカテゴリ名をクリックすると、そのカテゴリの投稿が表示されるようにしたいと思います。これは、LifeIsSimpleテンプレートの「archives.php」ファイルを介して行われます。

プラグインのショートコードは次のとおりです。

[wp_cpl_sc cat_id=40 list_num=4 css_theme=2 sticky_post="79"]

これは、「cat_id」がプラグインが表示するカテゴリを表す単なる例です。カテゴリを1つだけ表示するのではなく、誰かがリンクをクリックしたときに適切なカテゴリを表示するようにします。プラグインに要求されているカテゴリを認識させ、適切な投稿を表示するにはどうすればよいですか?

カテゴリのタイトルは次のとおりです。

<?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"]'); 
?>

これは何もしませんでした。最初の4つの投稿が表示されました。

2番目(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

を使用して、現在のカテゴリIDを取得できますget_the_category($post->ID);。これにより、表示している投稿に割り当てられているカテゴリのIDがわかります。

プラグインをどのように表示しますか?ファイルのどこかにショートコードを書きますか?はいの場合は、do_shortcodeを試してください。

于 2012-07-10T19:43:28.250 に答える
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 に答える