Widgets cá nhân trên mỗi trang


8

Trong trang web Wordpress (chỉ trang, không có bài đăng) của tôi, tôi có một số đốm màu tĩnh cần đặt trong một thanh bên. Chúng ta có thể gọi / tream thoses 'blobs' làm vật dụng. Ít nhất là họ sẽ có một nội dung html cố định, như 'teaser1', 'teaser2', 'từ chối trách nhiệm', 'chính sách foo' ...

Những gì tôi cần, là sắp xếp chúng khác nhau cho mỗi trang. Vì vậy, đây không chỉ là về 'độc thân' so với 'lưu trữ', mà thực sự là 'trang sản phẩm A' so với 'trang sản phẩm B' so với 'về chúng tôi' so với 'điều khoản dịch vụ' ...

Tôi đã suy nghĩ về các hộp meta tùy chỉnh để bật và tắt chúng trên trang soạn thảo riêng lẻ wp-admin/post.php?post=196&action=edit, nhưng tất nhiên sự thoải mái kéo và thả và xác định thứ tự dễ dàng của các vật dụng thông thường sẽ còn đẹp hơn.

Ngoài ra, tôi không chắc cách duy trì (thêm, xóa, chỉnh sửa (chế độ xem văn bản html sẽ làm) những đoạn tĩnh đó ...

Người dùng của tôi sẽ có nó trực quan hơn trên trang chỉnh sửa cá nhân ( wp-admin/post.php?post=123&action=edit) để kiểm tra "Tôi muốn tiện ích 1,2,5,8" thay vì đi tới tiện ích / đoạn mã tương ứng, nói với anh ta "Bạn phải xuất hiện trên các trang sau "mà tôi hiểu là cách mà Widgets hiển thị hoạt động ...

Vì vậy, lý tưởng nhất là tôi có trang tùy chọn Widgets (hoặc Mô-đun hoặc Đoạn trích), nơi tôi có thể thêm / chỉnh sửa / xóa các tiện ích. Và sau đó trên trang chỉnh sửa riêng lẻ, một metabox ở bên phải để thêm chúng và kéo chúng theo thứ tự.


Trong khi câu hỏi thú vị, nó cũng có vẻ là trường hợp sử dụng rất rất tùy chỉnh. Sự lựa chọn của bạn có lẽ là đi theo cách tiếp cận chung chung hơn như các plugin hiện có được đề xuất (tôi cũng sẽ gửi WooSidebars) hoặc [thuê ai đó để] mã hóa điều này từ đầu.
Rarst

Câu trả lời:



3

Điều gì về việc sử dụng một cái gì đó đơn giản như một plugin.

Tôi đang sử dụng Widgets Controller và nó là một ứng dụng tốt.

Một plugin cung cấp cho bạn quyền kiểm soát để hiển thị hoặc ẩn các widget trên Danh mục, Bài đăng và Trang WordPress.


2

Plugin này http://wordpress.org/extend/plugins/wp-page-widget/ rất tốt và đây là một số ảnh chụp màn hình và thông tin thêm về nó http://codeandmore.com/products/wordpress-plugins/wp- trang-widget / . Đã sử dụng nó trên khá nhiều trang web và không bao giờ có bất kỳ vấn đề.

Điều tốt nhất về nó là bạn thực sự có thể quản lý các widget cho từng trang cụ thể trên màn hình chỉnh sửa của trang mà không cần phải đi đến khu vực widget.


1

Tôi đã làm điều này cho một mẫu cụ thể trên một trang web. Bất kỳ trang nào có mẫu đó đều có vùng widget riêng, cho phép một hoặc nhiều widget dành riêng cho trang đó. Có một số plugin cung cấp cho bạn logic tiện ích động, nhưng cách tiếp cận này được nhắm mục tiêu nhiều hơn và có thể phù hợp với vấn đề của bạn (nó đã khai thác trên trang web cụ thể đó).

Đối với quản trị viên, tất cả các vùng widget phải được đăng ký để bạn có thể gán và định cấu hình widget cho các trang đó:

// dynamically add some widget zones for pages using some templates
add_action('sidebar_admin_setup', 'wpse_76601_actionSidebarAdminSetup');

/**
* handle action sidebar_admin_setup to check for dynamically created sidebars
* and make sure they're registered
*/
function wpse_76601_actionSidebarAdminSetup() {
    global $post;
    global $wp_registered_sidebars;

    // find all pages that use template with dynamic widget zone
    $query = new WP_Query(array(
        'meta_key' => '_wp_page_template',
        'meta_value' => 'wpse-template-dept.php',
        'post_type' => 'page',
        'nopaging' => true,
        'orderby' => 'title',
        'order' => 'ASC',
    ));

    while ($query->have_posts()) {
        $query->the_post();

        $id = "wpse-{$post->ID}-aside";

        // register any that aren't already registered
        if (!isset($wp_registered_sidebars[$id])) {
            register_sidebar( array(
                'name' => $post->post_title . ' Asides',
                'id' => $id,
                'description' => 'Aside widgets for page ' . $post->post_title,
                'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
                'after_widget' => '</li>',
                'before_title' => '<h3 class="widget-title">',
                'after_title' => '</h3>',
            ) );
        }
    }
    wp_reset_postdata();
}

Sau đó, trong mẫu trang, vùng widget phải được đăng ký lại trước khi được gọi; chỉ cần thêm ở đầu mẫu trước khi gọi đến wp_head()và nó sẽ chỉ đăng ký cho trang cụ thể đó.

function template_widgetsInit() {
    global $post;

    register_sidebar( array(
        'name' => $post->post_title . ' Asides',
        'id' => "wpse-{$post->ID}-aside",
        'description' => "Aside widgets for page {$post->post_title}",
        'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
        'after_widget' => '</li>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );
}
template_widgetsInit();

0

Bạn đang nói về việc sắp xếp lại chúng hay chỉ đơn giản là bật cái nào được hiển thị trên cơ sở mỗi trang? Bạn chắc chắn có thể thêm một phân loại và có từng tiện ích lắng nghe sự hiện diện của thuật ngữ đó (ví dụ trong sidebar.php).

Ví dụ: phân loại đã đăng ký có thể được gọi là "Hiện diện widget" và có các thuật ngữ như Widget 1, Widget 3, About Us Text, Foo Bar.

Một trang sẽ chọn những điều khoản mà nó có.

Trong thanh bên, bạn có một số câu lệnh có điều kiện để kiểm tra xem thuật ngữ nào mà bất kỳ trang cụ thể nào có và tải các phần mẫu hoặc các vật dụng hoặc khối mã cụ thể tương quan. Có lý?

Tôi có thể chuẩn bị một ví dụ cụ thể hơn nếu bạn muốn cung cấp chi tiết cụ thể hơn.


0

Không phải mỗi trang có một mẫu trang khác nhau và mỗi mẫu trang đó có một menu khác nhau? Tôi cho rằng có giới hạn số lượng menu bạn có thể tạo, sẽ là giới hạn lớn nhất.


0

Tôi đã xây dựng một trang web với những nhu cầu tương tự. Tôi thực sự chỉ sử dụng plugin "Widget Logic"

http://wordpress.org/extend/plugins/widget-logic/

Nó tạo trường văn bản trên mỗi widget có các thẻ điều kiện Wordpress. Nếu tôi cần sắp xếp lại chúng, tôi đã tạo nhiều hơn một trong các widget cần thiết ở các vị trí riêng biệt. Đó là một sửa chữa nhanh chóng dễ dàng.

Leon

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.