web-dev-qa-db-fra.com

Shortcode de la galerie Wordpress: affichage d'un seul identifiant de catégorie

Bonne journée. J'utilise un shortcode Gallery sur mon site wordpress pour afficher des images. Le problème est que je n'étais pas dans la galerie pour afficher uniquement les images d'une certaine catégorie, par exemple la catégorie ID 35. Comment puis-je le spécifier dans le shortcode?

Petit code:

 [custom_gallery style="1" source="**cat=%cat_id%**" link="image" description="0" size="200x200" limit="10"]

Maintenant, j'ai essayé ce qui suit, mais ça ne marche pas -

cat=%35%
cat=%cat_id=35%

Aucune suggestion? Je vous remercie

Code de code court:

/**
 * Gallery posts shortcode
 */

function gallery_posts_func($atts, $content = null) {
    extract(shortcode_atts(array(
        "limit" => '5',
        "cat" => '',
        "thumb_width" => '',
        "thumb_height" => '',
    ), $atts));
    global $wp_query,$paged,$post;
    $temp = $wp_query;
    $wp_query= null;
    $wp_query = new WP_Query();

    $query .= '&posts_per_page='.$limit;
    $query .= '&post_type=gallery';
    $query .= '&taxonomy=gallery_cat';
    $query .= '&gallery_cat='.$cat;

    $wp_query->query($query);
    ob_start();
    ?>
    <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
        <div class="gallery-holder fourthcol shortcode">
<?php

                $gogo_gallery_video_url = get_post_meta($post->ID, 'gogo_gallery_video_url', true);
                $gogo_gallery_links_to = get_post_meta($post->ID, 'gogo_gallery_links_to', true);
                $gogo_gallery_title_links_to = get_post_meta($post->ID, 'gogo_gallery_title_links_to', true);
                $gogo_gallery_custom_link = get_post_meta($post->ID, 'gogo_gallery_custom_link', true);

                if ($gogo_gallery_title && $gogo_gallery_video_url && $gogo_gallery_title_links_to=="gallery_title_links_image") {
                echo '<h5>';    
                echo '<a href="'.$gogo_gallery_video_url.'" rel="prettyPhoto[mixed]">';
                echo ''.get_the_title().'';
                echo '</a>';
                echo '</h5>';

                } elseif ($gogo_gallery_title && $gogo_gallery_title_links_to=="gallery_title_links_image") {
                echo '<h5>';    
                echo '<a href="'.$thumbnail[0].'" rel="prettyPhoto[mixed]">';
                echo ''.get_the_title().'';
                echo '</a>';
                echo '</h5>';

                } elseif ($gogo_gallery_title && $gogo_gallery_title_links_to=="gallery_title_links_content") {
                echo '<h5>';    
                echo '<a href="'.get_permalink().'">';
                echo ''.get_the_title().'';
                echo '</a>';
                echo '</h5>';

                } elseif ($gogo_gallery_title && $gogo_gallery_title_links_to=="gallery_title_links_link") {
                echo '<h5>';    
                echo '<a href="'.$gogo_gallery_custom_link.'">';
                echo ''.get_the_title().'';
                echo '</a>';
                echo '</h5>';

                } elseif ($gogo_gallery_title) {
                echo '<h5>';    
                echo ''.get_the_title().'';
                echo '</h5>';

                } else {
                echo '';
                }
        ?>  
<div class="gallery-box">
    <div class="gallery-image prettygallery">
        <?php if (has_post_thumbnail()) { ?>
            <?php
                $thumbnail = wp_get_attachment_image_src(get_post_thumbnail_id(), 'large');

                if ($gogo_gallery_video_url && $gogo_gallery_links_to=="gallery_links_image") { 
                echo '<a href="'.$gogo_gallery_video_url.'" rel="prettyPhoto[mixed]">';
                echo '<img src="'.get_template_directory_uri().'/timthumb.php?src='.$thumbnail[0].'&amp;w='.$thumb_width.'&amp;h='.$thumb_height.'&amp;zc=1&amp;q=100&amp;s=1" alt="'.get_the_title().'" />';
                echo '</a>';

                } elseif ($gogo_gallery_links_to=="gallery_links_image") {
                echo '<a href="'.$thumbnail[0].'" rel="prettyPhoto[mixed]">';
                echo '<img   src="'.get_template_directory_uri().'/timthumb.php?src='.$thumbnail[0].'&amp;w='.$thumb_width.'&amp;h='.$thumb_height.'&amp;zc=1&amp;q=100&amp;s=1" alt="'.get_the_title().'" />';
                echo '</a>';

                } elseif ($gogo_gallery_links_to=="gallery_links_content") {
                echo '<a href="'.get_permalink().'">';
                echo '<img src="'.get_template_directory_uri().'/timthumb.php?src='.$thumbnail[0].'&amp;w='.$thumb_width.'&amp;h='.$thumb_height.'&amp;zc=1&amp;q=100&amp;s=1" alt="'.get_the_title().'" />';
                echo '</a>';

                } elseif ($gogo_gallery_links_to=="gallery_links_link") {
                echo '<a href="'.$gogo_gallery_custom_link.'">';
                echo '<img src="'.get_template_directory_uri().'/timthumb.php?src='.$thumbnail[0].'&amp;w='.$thumb_width.'&amp;h='.$thumb_height.'&amp;zc=1&amp;q=100&amp;s=1" alt="'.get_the_title().'" />';
                echo '</a>';

                } else {
                echo '<img src="'.get_template_directory_uri().'/timthumb.php?src='.$thumbnail[0].'&amp;w='.$thumb_width.'&amp;h='.$thumb_height.'&amp;zc=1&amp;q=100&amp;s=1" alt="'.get_the_title().'" />';
                }
            ?>
        <?php } ?>
    </div>
<?php if ($gogo_gallery_short_desc) { ?><em><?php echo $gogo_gallery_short_desc; ?></em><?php } ?>
</div>
</div>
    <?php endwhile; ?>


    <?php $wp_query = null; $wp_query = $temp;
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}
add_shortcode("gallery_posts", "gallery_posts_func");
1
DextrousDave

Cela peut faire ..

[custom_gallery style="1" cat="35" link="image" description="0" size="200x200" limit="10"]
1
Rajeev Vyas

Ce n'est pas une réponse complète. Au fur et à mesure que je écrivais, je remarquais de plus en plus de problèmes ou de problèmes potentiels. Plutôt que de gaspiller vos efforts, voici ce que j'ai et j'espère que cela vous aidera.

Tout d'abord, vous enregistrez votre code court sous le nom gallery_posts, mais vous utilisez custom_gallery pour essayer de le mettre en œuvre.

Vous passez votre catégorie comme ceci: source="**cat=%cat_id%**" mais vous n'effectuez aucun traitement supplémentaire, donc cette ligne: $query .= '&gallery_cat='.$cat; n'est jamais définie, et si cela se produisait, elle ressemblerait à ceci: $query .= '&gallery_cat=**cat=%cat_id%**, ce qui serait faux. Le nom/ID d'attribut est source mais vous ne l'utilisez pas. Vous utilisez cat à la place.

extract(shortcode_atts(array(
    "limit" => '5',
    "cat" => '',
    "thumb_width" => '',
    "thumb_height" => '',
), $atts));

Je suggérerais quelque chose comme ceci pour votre shortcode:

[custom_gallery style="1" cat="35" ...

(Vous ne savez pas pourquoi vous avez tous ces % dans votre code, sans parler du *. Que sont censés faire ces personnes?) Maintenant, cette ligne - $query .= '&gallery_cat='.$cat;-- apparaîtra comme $query .= '&gallery_cat=35, mais si vous vérifiez le Codex , cette syntaxe (dépréciée) {tax}= attend un slug, pas un ID. Vous devez réécrire votre requête comme ceci:

$args = array(
  'posts_per_page' => $limit,
  'post_type' => 'gallery',
  'tax_query' => array(
    array(
      'taxonomy' => 'gallery_cat',
      'field' => 'id',
      'terms' => $cat
    )
  )
);
$wp_query = new WP_Query($args);

Cela devrait au moins résoudre certains problèmes. Je dois noter que "galerie" n'est pas un message que je connais bien. Je suppose que c'est quelque chose que vous avez créé? Si vous essayez d'utiliser les galeries WordPress, cela ne fonctionnera pas. Jetez un coup d’œil à la manière dont le shortcode de la galerie WordPress extrait les données: http://core.trac.wordpress.org/browser/trunk/wp-includes/media.php#L671 Ce n'est pas un processus simple.

1
s_ha_dum