Căutați o modalitate de a dezactiva complet funcționalitatea de căutare pe site-ul dvs.? Deși probabil există un plugin pentru asta, am creat un fragment de cod rapid pe care îl puteți utiliza pentru a dezactiva complet căutarea publică în WordPress.
Instrucțiuni:
Tot ce trebuie să faceți este să adăugați acest cod în fișierul functions.php al temei dvs. sau într-un plugin specific site-ului:
<?php tag_cloud_by_category($cat_id); // $cat_id is the desired category id ?>
Puteți, de asemenea, să colectați toate etichetele utilizate de o categorie pentru orice altceva aveți nevoie, astfel:
<?php $tags = get_tags_in_use($cat_id, 'format'); // Format can be 'id', 'name', or 'slug' ?>
Pentru a afișa norul de etichete, adăugați pur și simplu acest cod în fișierul functions.php al temei dvs.
// 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>';
}
Notă: Dacă aceasta este prima dată când adăugați fragmente de cod în WordPress, consultați ghidul nostru despre cum să adăugați corect fragmente de cod în WordPress, pentru a nu vă defecta accidental site-ul.
Dacă v-a plăcut această secțiune de cod, vă rugăm să luați în considerare să consultați și celelalte articole de pe site, cum ar fi: cele mai bune 9 pluginuri pentru evenimente WordPress și cum să creați formulare de abonare uimitoare în WordPress.
Mulțumesc, mi-ai făcut ziua mai bună, nu pot să cred că oricare dintre pluginurile existente avea această opțiune de a filtra etichetele pe categorii.
Am creat asta ca un shortcode și l-am inserat într-o pagină Elementor, doar că a trebuit să fac o corecție pentru a nu strica Elementor.
La linia 39, după endwhile; și înainte de endif;, a trebuit să adaug următoarea linie pentru a restaura datele originale ale postării:
wp_reset_postdata();
Acesta este APROAPE ceea ce căutam.
Am un tip de postare personalizat „download” cu propria sa etichetă personalizată „download_tag” (folosind Easy Digital Downloads)
Cum pot adapta codul dvs. pentru a afișa „download_tag” dintr-o „download_category” furnizată
Ar trebui să editați apelul WP_Query() pentru a include tipul de postare personalizat.