web-dev-qa-db-fra.com

Construire une liste de partenaires avec lien, logo et texte

Je veux construire une liste de partenaires. Pour le moment, j'ai essayé avec la fonction "liens", le problème est que je ne peux pas utiliser de balises HTML sur le champ de description. Par conséquent, je cherche une autre solution. Quelqu'un a une suggestion?

1
otmezger

Comme NW Tech l'a commenté, vous devez utiliser un type de publication personnalisé. Vérifiez le codex pour register_post_type .

Vous pouvez essayer quelque chose comme ça:

function partners_custom_init() {
  $labels = array(
    'name' => 'Partners',
    'singular_name' => 'Partner',
    'add_new' => 'Add New',
    'add_new_item' => 'Add New Partner',
    'edit_item' => 'Edit Partner',
    'new_item' => 'New Partner',
    'all_items' => 'All Partners',
    'view_item' => 'View Partner',
    'search_items' => 'Search Partners',
    'not_found' =>  'No Partners found',
    'not_found_in_trash' => 'No Partners found in Trash', 
    'parent_item_colon' => '',
    'menu_name' => 'Partners'
  );

  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true, 
    'show_in_menu' => true, 
    'query_var' => true,
    'rewrite' => array( 'slug' => 'partner' ),
    'capability_type' => 'post',
    'has_archive' => true, 
    'hierarchical' => false,
    'menu_position' => null,
    'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
  ); 

  register_post_type( 'partner', $args );
}
add_action( 'init', 'partners_custom_init' );

Avec ce morceau de code dans functions.php, vous pourrez ajouter des partenaires au fur et à mesure que vous ajoutez des publications ou des pages.

Vous n'expliquez pas où voulez-vous afficher les résultats? Vous pouvez utiliser des modèles de type de message personnalisé ou une requête personnalisée n'importe où dans votre fichiers pour les montrer.

1
chifliiiii

Bien qu’il soit en quelque sorte "déconseillé" au profit des types de publication personnalisés (Je crois que ce ne sera pas possible, à cause de la compatibilité ascendante - ticket de base pertinent ), j'aime bien Links fonctionnalité.

Le code suivant autorise les balises HTML dans le champ Description, ainsi que dans le champ Notes champ (il s’agit d’un gros textarea au lieu du seul champ text pour la description).

remove_filter( 'pre_link_description', 'wp_filter_kses' );
remove_filter( 'pre_link_notes', 'wp_filter_kses' );

add_filter( 'pre_link_description', 'wp_filter_post_kses' );
add_filter( 'pre_link_notes', 'wp_filter_post_kses' );

Il peut être collé dans le fichier functions.php du thème, mais il vaut mieux le placer en tant que plugin autonome (donc, il est indépendant du thème).
Voir ce Q & A: Où mettre mon code: plugin ou functions.php?

Ce plugin peut également être d’intérêt, je l’ai fait en me basant sur un sujet WordPress Answers: Featured Link Image .

0
brasofilo

Comme promis, voici la solution codée en dur que j'ai utilisée par le passé. Cependant, je tiens à préciser que je préfère définitivement la solution de type courrier personnalisé. Si j'en ai l'occasion, j'y reviendrai probablement moi-même.

//edit here to add/remove sponsors
// array('Sponsor Name','name of logo in images folder','url of sponsor site')
$sponsors = array(
                array('Sponsor 1','logo1.jpg','http://www.site1.com'),
                array('Sponsor 2','logo2.png','http://www.site2.com'),
                array('Sponsor 3','logo3.png','http://www.site3.com'),
                array('Sponsor 4','logo4.png','http://www.site4.com')
            );

$src = get_stylesheet_directory() . '/images/logos/';

?>
<div id='sponsors'>

    <?php $i=1;
        foreach ($sponsors as $sponsor) {
            echo '<a target="_blank" class="sponsors" href="'.$sponsor[2].'" title="'.$sponsor[0].'">
      <img class="color" src="'. esc_attr( $src .$sponsor[1] ).' alt="'.$sponsor[0]. ' Logo" class="sponsors" /></a>';

            $i++;
        } ?>

</div>
0
helgatheviking