web-dev-qa-db-ja.com

ワードプレスを使用したクライアントリスト

私は私の新しいウェブサイトのためにワードプレスを使用しています、そして私は顧客のリスト(名前と彼らのロゴ)を持っています。ワードプレスを使用してそれらを編集可能にする方法がわからないのですが。次のようなHTML ...

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

私はカスタム投稿タイプか何かを使うべきですか?クライアントを簡単に追加/編集/削除できるように、ワードプレスを使用してこれを達成するための類似の例またはより良いアプローチをいくつか提案してください。

ありがとう。

4
seoppc

これにはカスタム投稿タイプを使用します。しかし、「カスタム投稿タイプ」という言葉があなたを怖がらせないでください。

たとえば、 私のクライアントの1人 は、さまざまなパートナーを表示する「ラインカード」を提示する必要がありました。彼らが望んでいたのは、もともと、彼らのさまざまなパートナーの名前とロゴだけでした。機能を構築した後、彼らは各パートナーの説明を追加したいと考えました。

カスタム投稿タイプは、タイトル、編集者、およびサムネイルを含むようになりました。エンドユーザーは、新しい「パートナー」を作成し、従来のWordPressの投稿編集画面にコンテンツを入力できます。どこでもコードを編集する必要はありません。

Adapt Electronics Custom Post Type

ラインカードページは、パートナー全員が読みやすい形式で表示されるカスタムショートコードを使用してレンダリングされます。

Adapt Electronics Line Card

コード

カスタム投稿タイプを追加するのはかなり簡単です。呼び出したいものを定義して、文字列を適切に設定するだけです。

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

それからそれはあなたの出力を記述し定義することの問題です。以下の[linecard]ショートコードの例は、この情報をデータベースから取り出して画面に表示するためのすべての作業を行っています。

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

加えて

コンテンツをデータベースにロードしたら、必要に応じてそれを取り出すことができます。ラインカードに加えて、私のクライアントは彼らのサイトのフロントページにパートナーのロゴのスクロールカルーセルを持っています - すべて同じデータを使用しています。

Adapt logo carousel


CPT用のカスタムメタボックス

クライアントのカスタム投稿タイプに "Link"フィールドを追加するために使用するコードは、重要ではないと思われるので実際に削除しました。しかし、register_post_type()で構築されたCPTにカスタムメタボックスを追加するのはかなり簡単です。

手順1:$args配列にメタボックスコールバックを追加する

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

次にコールバック関数を定義します。

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

この特定の例では、ユーザーが外部メーカーのWebサイトへのリンクを追加できるようにするメタボックスを追加しています。中心となる機能は関数manufacturer_link_meta_box()にあり、それは 通常のすべての規則に従います カスタムメタボックスはそれに従います。


メタボックスのフルコード

あなたのサイトではこのコードコードを使用しないでください。 あなたは自分の目的に合うようにコードを修正する必要があるので、これを自分のシステムにコピー&ペーストしないでください。

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

カスタム投稿タイプを使用できます たくさんの例を得るためにportfolioを検索してください。 EAMannの答えを見てください。

またはリンクマネージャを使用するだけです。画像との単純なリンクでは十分です。

それなら wp_list_bookmarks() で非常にカスタマイズ可能なリストを作成することができます。

enter image description here

5
fuxia

投稿を使わないのはなぜですか。あなたはそれぞれのクライアントのために投稿を作成し、ロゴを表示するために注目の画像(AKA Post Thumbnails)を使うことができます。その後、WordPress管理者エリアを使用して、投稿制限を1ページあたり10に設定できます。Settings/Reading...Blog pages show at most 10

1
Jeremy Jared