it-swarm.com.de

kundenliste mit WordPress

Ich benutze WordPress für meine neue Website und habe eine Liste der Kunden (Name und deren Logos). Ich bin verwirrt, wie ich diese mit WordPress bearbeitbar machen kann. Html wie folgt ...

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

Soll ich einen benutzerdefinierten Beitragstyp verwenden oder so? Bitte schlagen Sie einige ähnliche Beispiele oder einen besseren Ansatz vor, um dies mit WordPress zu erreichen, damit Clients einfach hinzugefügt, bearbeitet oder gelöscht werden können.

vielen Dank.

4
seoppc

Sie sollten dafür einen benutzerdefinierten Beitragstyp verwenden. Aber lassen Sie sich von den Begriffen "Benutzerdefinierter Beitragstyp" nicht abschrecken.

Zum Beispiel musste einer meiner Kunden eine "Line Card" mit den verschiedenen Partnern vorlegen. Ursprünglich wollten sie nur den Namen und das Logo ihrer verschiedenen Partner. Nachdem ich die Funktion erstellt hatte, wollten sie für jeden Partner eine Beschreibung hinzufügen.

Der benutzerdefinierte Beitragstyp umfasste schließlich einen Titel, einen Editor und eine Miniaturansicht. Der Endbenutzer kann einen neuen "Partner" erstellen und den Inhalt in einem herkömmlichen WordPress-Post-Bearbeitungsbildschirm eingeben - Code muss nirgendwo bearbeitet werden.

Adapt Electronics Custom Post Type

Die Seite mit der Linienkarte wird dann mithilfe eines benutzerdefinierten Shortcodes gerendert, der alle Partner in einem leicht lesbaren Format anzeigt.

Adapt Electronics Line Card

Der Code

Das Hinzufügen eines benutzerdefinierten Beitragstyps ist recht einfach. Definieren Sie einfach, wie Sie es nennen möchten, und richten Sie Ihre Zeichenfolgen entsprechend ein:

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 );
}

Dann geht es darum, Ihre Ergebnisse zu beschreiben und zu definieren. Das folgende Beispiel für einen [linecard]-Shortcode erledigt die gesamte Arbeit, um diese Informationen aus der Datenbank zu ziehen und auf dem Bildschirm zu rendern:

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;
}

In Ergänzung

Sobald Sie den Inhalt in die Datenbank geladen haben, können Sie ihn herausziehen, wie Sie möchten. Zusätzlich zur Line Card hat mein Kunde auch ein Karussell mit Partnerlogos auf der Titelseite seiner Website - alle mit genau den gleichen Daten.

Adapt logo carousel


Benutzerdefinierte Meta-Boxen für CPTs

Ich habe den Code entfernt, den ich verwende, um dem benutzerdefinierten Beitragstyp meines Kunden ein "Link" -Feld hinzuzufügen, da er nicht wichtig zu sein schien. Das Hinzufügen von benutzerdefinierten Meta-Boxen zu einem mit register_post_type() erstellten CPT ist jedoch recht einfach.

Schritt 1: Fügen Sie Ihrem $args-Array einen Metabox-Rückruf hinzu:

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

Definieren Sie dann die Rückruffunktion:

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

In diesem speziellen Beispiel füge ich eine Meta-Box hinzu, mit der der Benutzer einen Link zur Website des externen Herstellers hinzufügen kann. Die Kernfunktionalität liegt in der Funktion manufacturer_link_meta_box() und sie folgt allen normalen Regeln denen benutzerdefinierte Meta-Boxen folgen.


Vollständiger Code für Meta-Boxen

BENUTZEN SIE DIESEN CODE BITTE NICHT VERBATIMT AUF IHRER WEBSITE!Sie müssen den Code unbedingt an Ihre Zwecke anpassen, kopieren Sie ihn also nicht einfach in Ihr eigenes System.

// 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

Sie könnten benutzerdefinierte Beitragstypen verwenden, suchen Sie nach portfolio, um unzählige Beispiele zu erhalten. Siehe die Antwort von EAMann.

Oder benutze einfach den Link Manager . Für einfache Links mit Bildern ist es gut genug.

Sie können dann mit wp_list_bookmarks() eine sehr anpassbare Liste erstellen.

enter image description here

5
fuxia

Warum nicht einfach Beiträge verwenden? Sie können für jeden Kunden einen Beitrag erstellen und das vorgestellte Bild (AKA Post Thumbnails) verwenden, um die Logos anzuzeigen. Sie können das Post-Limit dann über den WordPress-Administrationsbereich auf 10 pro Seite setzen: Settings/Reading...Blog pages show at most 10

1
Jeremy Jared