web-dev-qa-db-fra.com

liste de clients utilisant wordpress

J'utilise wordpress pour mon nouveau site web et j'ai une liste de clients (nom et logos). Je suis confus comment rendre ces éditable en utilisant wordpress? Html comme suit ...

<ul>
<li><img src="1.jpg" alt="client1"/>Client1</li>
<li><img src="2.jpg" alt="client2"/>Client2</li>
</ul>

Devrais-je utiliser le type de message personnalisé ou quelque chose? Veuillez suggérer quelques exemples similaires ou une meilleure approche pour y parvenir en utilisant wordpress, afin que les clients puissent être ajoutés/édités/supprimés facilement.

merci.

4
seoppc

Vous voudrez utiliser un type de message personnalisé pour cela. Mais ne laissez pas les termes "type de message personnalisé" vous effrayer.

Par exemple, un de mes clients devait présenter une "carte de ligne" indiquant leurs différents partenaires. Tout ce qu'ils voulaient, à l'origine, c'était le nom et le logo de leurs différents partenaires. Après avoir développé la fonctionnalité, ils ont voulu ajouter une description pour chaque partenaire.

Le type de publication personnalisé a fini par inclure un titre, un éditeur et une miniature. L'utilisateur final peut créer un nouveau "partenaire" et saisir le contenu dans un écran de modification de publication WordPress traditionnel - inutile de modifier le code n'importe où.

Adapt Electronics Custom Post Type

Leur page de carte de visite est ensuite rendue à l'aide d'un shortcode personnalisé qui affiche tous leurs partenaires dans un format facile à lire.

Adapt Electronics Line Card

Le code

Ajouter un type de message personnalisé est assez simple. Définissez simplement comment vous voulez l'appeler et configurez vos chaînes de manière appropriée:

add_action( 'init', 'manufacturer_post_type' );
function manufacturer_post_type() {
    $labels = array(
        'name'               => 'Manufacturers',
        'singular_name'      => 'Manufacturer',
        'add_new_item'       => 'Add New Manufacturer',
        'edit_item'          => 'Edit Manufacturer',
        'new_item'           => 'New Manufacturer',
        'all_items'          => 'All Manufacturers',
        'view_item'          => 'View Manufacturers',
        'search_items'       => 'Search Manufacturers',
        'not_found'          => 'No manufacturers found',
        'not_found_in_trash' => 'No manufacturers found in trash',
        'menu_name'          => 'Manufacturers'
    );

    $args = array(
        'labels'             => $labels,
        'capability_type'    => 'post',
        'public'             => true,
        'menu_position'      => 20,
        'show_ui'            => true,
        'publicly_queryable' => false,
        'show_in_menu'       => true,
        'query_var'          => false,
        'rewrite'            => false,
        'has_archive'        => false,
        'supports'           => array(
            'title',
            'editor',
            'thumbnail'
        ),
        'can_export'         => true,
    );

    register_post_type( 'adapt-manufacturer', $args );
}

Il s’agit ensuite de décrire et de définir votre production. L'exemple de [linecard] shortcode ci-dessous montre ce que tout le travail fait pour extraire ces informations de la base de données et les afficher à l'écran:

add_shortcode( 'linecard', 'line_card_shortcode' );
function line_card_shortcode( $atts ) {
    $results = get_manufacturers();

    $output = '<table cellspacing="20px" width="100%"><tbody>';
    $count = 0;
    $closed = true;

    while ( $results->have_posts()) : $results->the_post();
        if ( $count == 0 ) {
            $output .= '<tr valign="top">';
            $closed = false;
        }

        $link = get_post_meta( get_the_ID(), 'manufacturer_link', true );

        $output .= '<td width="33%">';
        $output .= '<strong><a href="' . $link . '">' . get_the_title() . '</a></strong><br />';
        $output .= get_the_content();
        $output .= '</td>';

        $count++;
    if ( $count == 3 ) {
            $output .= '</tr>';
            $closed = true;
            $count = 0;
        }
    endwhile;

    if ( !$closed ) $output .= '</tr>';

    $output .= "</tbody></table>";

    return $output;
}

En outre

Une fois le contenu chargé dans la base de données, vous pouvez le retirer comme vous le souhaitez. En plus du linecard, mon client aussi a un carrousel de logos de partenaires défilant sur la page de couverture de son site, tous utilisant exactement les mêmes données.

Adapt logo carousel


Custom Meta Boxes pour les CPT

En fait, j'ai supprimé le code que j'utilise pour ajouter un champ "Lien" au type de publication personnalisé de mon client, car cela ne semblait pas important. Mais ajouter des méta-boîtes personnalisées à un CPT construit avec register_post_type() est assez facile.

Étape 1: Ajoutez un rappel de métabox à votre tableau $args:

$args = array(
    'labels'             => $labels,
    'capability_type'    => 'post',
    // ... other entries removed for brevity
    'register_meta_box_cb' => 'manufacturer_meta',
);

Puis définissez la fonction de rappel:

function manufacturer_meta() {
    add_meta_box(
        'manufacturer_link',
        'Link to Manufacturer Site',
        'manufacturer_link_meta_box',
        'adapt-manufacturer',
        'normal',
        'high'
    );
}

Dans cet exemple spécifique, j'ajoute une méta-boîte qui permet à l'utilisateur d'ajouter un lien vers le site Web du fabricant externe. La fonctionnalité principale est dans la fonction manufacturer_link_meta_box() et elle suit toutes les règles normales que les méta-boîtes personnalisées suivent.


Code complet pour les méta-boîtes

VEUILLEZ NE PAS UTILISER CE VERBATIM DE CODE SUR VOTRE SITE!Vous devez absolument modifier le code pour l'adapter à vos besoins, aussi évitez de le copier-coller dans votre propre système.

// This function generates the actual markup of the meta box
function manufacturer_link_meta_box( $post ) {
    $link = get_post_meta( $post->ID, 'manufacturer_link', true );

    wp_nonce_field( plugin_basename(__FILE__), 'manufacturer_link_nonce' );
    echo '<label for="manufacturer_link">Site URL:</label>';
    echo '<input type="text" id="manufacturer_link" name="manufacturer_link" size="150" value="';
    echo $link;
    echo '" />';
}

// When the post is saved/updated, you need to save the content of the meta box as well
add_action( 'save_post', 'save_manufacturer_link' );
function save_manufacturer_link( $post_id ) {
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return;

    if ( ! isset( $_POST['manufacturer_link'] ) || ! wp_verify_nonce( $_POST['manufacturer_link_nonce'], plugin_basename(__FILE__) ) )
        return;

    if ( ! current_user_can( 'edit_post', $post_id ) )
        return;

    $link = $_POST['manufacturer_link'];

    update_post_meta( $post_id, 'manufacturer_link', $link );
}
5
EAMann

Vous pouvez utiliser des types de publication personnalisés, recherchez portfolio pour obtenir une tonne d'exemples. Voir la réponse de EAMann.

Ou utilisez simplement le gestionnaire de liens link . Pour des liens simples avec des images, c'est suffisant.

Vous pouvez alors créer une liste très personnalisable avec wp_list_bookmarks() .

enter image description here

5
fuxia

Pourquoi ne pas simplement utiliser les messages? Vous pouvez créer une publication pour chaque client et utiliser l'image sélectionnée (AKA Post Thumbnails) pour afficher le logo. Vous pouvez ensuite définir la limite de publication à 10 par page via la zone d'administration de WordPress: Settings/Reading...Blog pages show at most 10

1
Jeremy Jared