WordPress:カテゴリごとにサイドバーを自動的に作成

WordPressカテゴリごとにサイドバーを登録する機能

私はこのサイトを簡素化して、スピードタイムを改善し、読者を苛立たせることなくサイトをより良く収益化しようとしています。 私がサイトを収益化する方法は複数あります…ここでは、最も収益性の高いものから最も収益性の低いものまであります。

  • 直接スポンサーシップ パートナー企業から。 私たちは、ウェビナーからソーシャルメディア共有まですべてを組み込んで、イベント、製品、および/またはサービスを宣伝するための集合的な戦略に取り組んでいます。
  • アフィリエイトマーケティング 一連のアフィリエイトプラットフォームから。 私は会社を精査して特定し、評判が良いことを確認し、私が書いた特定の記事や会社が提供する広告を共有します。
  • リソースマーケティング リリースするパートナーから マーケティング関連のイベント、ケーススタディ、およびホワイトペーパー.
  • バナー広告 関連する広告が私のテンプレートとコンテンツ全体に自動的に分散されるGoogleから。

WordPressサイドバー

アフィリエイトマーケティングがある程度の収益を上げているので、サイトのカテゴリに基づいて非常に特定の広告主にスポットライトを当てたいと思ったので、サイトの各サイドバーをハードコーディングせずに動的にサイドバーを作成したいと思いました。 このように、カテゴリを追加すると、サイドバーがウィジェット領域に自動的に表示され、広告を追加できます。

これを行うには、特定のコードが必要でした のfunctions.php 私の子供のテーマのファイル。 ありがたいことに、私は誰かが私が必要とするほとんどすべてをすでに書いていることに気づきました: WordPressのカテゴリごとにウィジェット化されたサイドバーを作成する。 サイドバーを表示したいカテゴリを制御するための追加のコントロールが必要でした。

function add_category_sidebars() {
    $args = array(
        'type'                     => 'post',
        'orderby'                  => 'name',
        'order'                    => 'ASC',
        'hide_empty'               => 1,
        'hierarchical'             => 1,
        'exclude'                  => '',
        'include'                  => '',
        'number'                   => '',
        'taxonomy'                 => 'category'
        ); 
    
    $categories = get_categories($args);

    foreach ($categories as $category) {
        if (0 == $category->parent)
            register_sidebar( array(
                'name' => $category->cat_name,
                'id' => $category->category_nicename . '-sidebar',
                'description' => 'This is the ' . $category->cat_name . ' widgetized area',
                'before_widget' => '<aside id="%1$s" class="widget %2$s">',
                'after_widget' => '</aside>',
                'before_title' => '<h3 class="widget-title">',
                'after_title' => '</h3>',
            ));
        }
}
add_action( 'widgets_init', 'add_category_sidebars' );

カテゴリを取得するための引数の配列を使用して、ターゲットにしたいカテゴリを含めたり除外したりできます。 foreachステートメント内で、レイアウトを変更して、WordPressサイト全体のサイドバー形式に一致させることができます。

さらに、私の中で のfunctions.php、サイドバーが存在し、ウィジェットが追加されているかどうかを確認する関数を追加したいと思います。

function is_sidebar_active($cat_name) {
    global $wp_registered_sidebars;
    $cat_id = get_cat_ID($cat_name);
    $widgetlist = wp_get_sidebars_widgets();
    if ($widgetlist[$cat_id])
        return true;
    return false;
}

次に、私のテーマの中で サイドバー テンプレートファイル、サイドバーが登録されていてウィジェットが含まれている場合に領域を動的に表示するコードを追加します。

$queried_object = get_queried_object();
if ($queried_object) {
    $post_id = $queried_object->ID;
}
if(is_category() || in_category($cat_name, $post_id)) {
    $sidebar_id = sanitize_title($cat_name);
    if( is_sidebar_active($sidebar_id)) {
        dynamic_sidebar($sidebar_id);
    }
}

各カテゴリのWordPressサイドバー

結果はまさに私が望んでいたものです:

各カテゴリのWordPressウィジェットサイドバー

これで、カテゴリを追加、編集、削除するかどうかに関係なく、サイドバー領域は常に最新の状態になります。

どう思いますか?

このサイトはAkismetを使用して迷惑メールを減らします。 コメントの処理方法を学ぶ.