X

Erstellen Sie eine Schlagwortwolke nach Kategorie-ID / Holen Sie sich Schlagwörter nach Kategorie-ID

Schnipsel von IsItWP

Suchen Sie nach einer Möglichkeit, die Suchfunktion auf Ihrer Website vollständig zu deaktivieren? Es gibt wahrscheinlich ein Plugin dafür, aber wir haben einen schnellen Code-Schnipsel erstellt, den Sie verwenden können, um die öffentliche Suche in WordPress vollständig zu deaktivieren.

Anweisungen:

Sie müssen diesen Code nur zur functions.php-Datei Ihres Themes oder in ein websitespezifisches Plugin einfügen:

<?php tag_cloud_by_category($cat_id); // $cat_id is the desired category id ?>

Sie können auch alle von einer Kategorie verwendeten Tags sammeln, für was auch immer Sie sonst noch brauchen, so:

<?php $tags = get_tags_in_use($cat_id, 'format'); // Format can be 'id', 'name', or 'slug' ?>

Um die Tag-Cloud anzuzeigen, fügen Sie diesen Code einfach zur functions.php-Datei Ihres Themes hinzu.

// Get tags IN USE by category id
function get_tags_in_use($category_ID, $type = 'name'){
    // Set up the query for our posts
    $my_posts = new WP_Query(array(
      'cat' => $category_ID, // Your category id
      'posts_per_page' => -1 // All posts from that category
    ));

    // Initialize our tag arrays
    $tags_by_id = array();
    $tags_by_name = array();
    $tags_by_slug = array();

    // If there are posts in this category, loop through them
    if ($my_posts->have_posts()): while ($my_posts->have_posts()): $my_posts->the_post();

      // Get all tags of current post
      $post_tags = wp_get_post_tags($my_posts->post->ID);

      // Loop through each tag
      foreach ($post_tags as $tag):

        // Set up our tags by id, name, and/or slug
        $tag_id = $tag->term_id;
        $tag_name = $tag->name;
        $tag_slug = $tag->slug;

        // Push each tag into our main array if not already in it
        if (!in_array($tag_id, $tags_by_id))
          array_push($tags_by_id, $tag_id);

        if (!in_array($tag_name, $tags_by_name))
          array_push($tags_by_name, $tag_name);

        if (!in_array($tag_slug, $tags_by_slug))
          array_push($tags_by_slug, $tag_slug);

      endforeach;
    endwhile; endif;

    // Return value specified
    if ($type == 'id')
        return $tags_by_id;

    if ($type == 'name')
        return $tags_by_name;

    if ($type == 'slug')
        return $tags_by_slug;
}

// Output tag cloud based on category id
function tag_cloud_by_category($category_ID){
    // Get our tag array
    $tags = get_tags_in_use($category_ID, 'id');

    // Start our output variable
    echo '<div class="tag-cloud">';

    // Cycle through each tag and set it up
    foreach ($tags as $tag):
        // Get our count
        $term = get_term_by('id', $tag, 'post_tag');
        $count = $term->count;

        // Get tag name
        $tag_info = get_tag($tag);
        $tag_name = $tag_info->name;

        // Get tag link
        $tag_link = get_tag_link($tag);

        // Set up our font size based on count
        $size = 8 + $count;

        echo '<span style="font-size:'.$size.'px;">';
        echo '<a href="'.$tag_link.'">'.$tag_name.'</a>';
        echo ' </span>';

    endforeach;

    echo '</div>';
}

Hinweis: Wenn Sie zum ersten Mal Code-Schnipsel in WordPress hinzufügen, lesen Sie bitte unseren Leitfaden, wie Sie Code-Schnipsel richtig in WordPress hinzufügen, damit Sie Ihre Website nicht versehentlich beschädigen.

Wenn Ihnen dieser Code-Schnipsel gefallen hat, lesen Sie bitte unsere anderen Artikel auf der Website, wie z. B.: 9 beste WordPress-Events-Plugins und wie Sie beeindruckende WordPress-Optin-Formulare erstellen.

Kommentare   Hinterlasse eine Antwort

  1. Danke, das hat meinen Tag gerettet! Ich kann nicht glauben, dass keines der Plugins da draußen diese Option hatte, Tags nach Kategorie zu filtern.
    Ich habe dies als Shortcode erstellt und in eine Elementor-Seite eingefügt. Ich musste nur eine Korrektur vornehmen, damit es Elementor nicht kaputt macht.
    In Zeile 39 musste ich nach dem endwhile; und vor dem endif; die folgende Zeile hinzufügen, um die ursprünglichen Post-Daten wiederherzustellen:
    wp_reset_postdata();

  2. Das ist FAST das, wonach ich gesucht habe.

    Ich habe einen benutzerdefinierten Post-Typ namens 'Download' mit seinem eigenen benutzerdefinierten Tag 'download_tag' (mit Easy Digital Downloads)

    Wie kann ich Ihren Code anpassen, um den 'download_tag' einer angegebenen 'download_category' anzuzeigen?

    1. Sie müssten den WP_Query()-Aufruf bearbeiten, um den benutzerdefinierten Post-Typ einzuschließen.

Kommentar hinzufügen

Wir freuen uns, dass Sie einen Kommentar hinterlassen haben. Bitte beachten Sie, dass alle Kommentare gemäß unserer Datenschutzrichtlinie moderiert werden und alle Links nofollow sind. Verwenden Sie KEINE Schlüsselwörter im Namensfeld. Lassen Sie uns ein persönliches und bedeutungsvolles Gespräch führen.

WordPress Launch Checkliste

Die ultimative Checkliste für den Start von WordPress

Wir haben alle wichtigen Checklistenpunkte für den Start Ihrer nächsten WordPress-Website in einem praktischen E-Book zusammengefasst.
Ja, senden Sie mir das kostenlose E-Book!