Cách tốt nhất để trình bày các tùy chọn cho trang chủ trong quản trị viên?


7

Tôi có một trang web với một trang chủ tùy chỉnh, home.php. Cách đúng đắn để trình bày các tùy chọn trang chủ có thể chỉnh sửa trong công cụ quản trị là gì?

Ví dụ: có một vài trường văn bản tùy chỉnh trên trang chủ có thể chỉnh sửa trong công cụ quản trị. Tôi đang tìm cách tốt nhất để thiết lập điều này để người dùng quản trị có thể thay đổi các tùy chọn này.

CẬP NHẬT: hãy tưởng tượng một trang web có trang chủ với một đoạn quảng cáo (chuỗi văn bản) mà tôi cần để có thể cho phép người dùng quản trị viên (người không phải là dân công nghệ) cập nhật dễ dàng. Tôi đang cố gắng tìm ra cách hiển thị màn hình trong quản trị viên có nội dung "Bạn muốn văn bản quảng cáo nào trên trang chủ? [ _ __ _ __ _ __ _ ____ ]"? Tôi đã nghĩ về việc thực hiện điều này thông qua widget nhưng tuyến đường đó rất lộn xộn và yêu cầu tôi tạo một thanh bên đặc biệt chỉ để giữ widget duy nhất. Cách tốt nhất để tiếp cận điều này là gì?

Câu trả lời:


11

Có nhiều giải pháp cho vấn đề này. Và mọi người trong số họ đều đúng, tôi đoán vậy. Nó phụ thuộc vào những gì bạn thực sự muốn và những gì sẽ thân thiện / rõ ràng nhất với người dùng / quản trị viên của trang này.

Tôi thường sử dụng 3 cách để giải quyết điều này. Tôi chọn cái nào trong số chúng? Nó phụ thuộc vào tình hình. Đôi khi tôi sử dụng đồng thời 2 trong số chúng.

1. Giải pháp trang tĩnh.

Khi tôi có thể đặt trang tĩnh làm trang trước, tôi sẽ làm điều đó. Sau đó tạo front-page.phpmẫu trang và sử dụng nó để xác định trang chủ / trang trước sẽ trông như thế nào.

Để hiển thị / cho phép chỉnh sửa một số trường tùy chỉnh trên trang này, tôi sử dụng plugin Trường tùy chỉnh nâng cao . Nó cho phép bạn xác định các trường tùy chỉnh được đặt cho trang trước (và nhiều hơn nữa). Sau đó, tôi sử dụng front-page.phpmẫu để hiển thị các giá trị trường tùy chỉnh này, nơi chúng sẽ được hiển thị.

Nếu một số giá trị này phải được lặp lại trên mỗi trang (ở chân trang, trong tiêu đề, v.v.), tôi nhận được các giá trị này từ Trang chủ như thế này:

$cf_value = get_post_meta( get_option('page_on_front'), '<CUSTOM FIELD NAME>', true );

Đó là giải pháp rất dễ dàng và sạch sẽ, khi không có nhiều trường nên được lặp lại trên các trang khác. Nó thân thiện với người dùng, tôi đoán vậy. Nếu bạn muốn chỉnh sửa trang chủ, bạn chỉ cần đi và làm điều đó - bạn có thể chỉnh sửa mọi thứ trong trình chỉnh sửa trang chủ.

2. Giải pháp phổ quát.

Giải pháp khác tôi sử dụng là xác định một số tùy chọn chủ đề. Sẽ tốt hơn nhiều khi bạn muốn xác định giao diện của trang (hình ảnh logo, hình nền, v.v.) và không chỉ nội dung (đặc biệt nếu bạn muốn nói nội dung chỉ có một trang).

Tôi thường sử dụng plugin OptionTree để làm điều này. Nhưng nó không quá khó để làm điều này một mình.

Tôi thực sự không thích ý tưởng, rằng bạn nên chỉnh sửa nội dung của trang trong các tùy chọn chủ đề, vì vậy tôi không thường xuyên sử dụng giải pháp này.

3. Khi nội dung này luôn được lặp lại trên các trang khác

Đôi khi bạn phải hiển thị một số giá trị trên mỗi trang (hoặc hầu hết trong số chúng) và không chỉ trên trang chủ. Sau đó, giải pháp "đẹp nhất", tôi nghĩ, là xác định các khu vực này là sidebars và cho phép người dùng chỉnh sửa chúng bằng các widget.

Nếu nội dung lặp lại này chỉ là một dòng (dòng thông tin bản quyền ở chân trang, v.v.) và nó sẽ không được thay đổi thành thường xuyên, tôi có thể sẽ sử dụng giải pháp 1. Nhưng nếu nó phức tạp hơn hoặc nó sẽ bị thay đổi thường xuyên, thì giải pháp này là tốt nhất, tôi đoán vậy.


Quả thực front-page.phpđược chỉ định nhiều hơn trong trường hợp này vì Phân cấp mẫu.
JMau

BTW Tôi đã đưa ra một cách khác để xử lý việc này-- thêm một tùy chọn vào cài đặt WP (như bảng 'Chung'). Nó không nhất thiết là nơi rõ ràng nhất để đặt nó, nhưng nó hoàn thành công việc và là phổ biến. Tôi nghĩ
Eric

4

Tôi khuyên bạn nên tạo một metabox cho mẫu trang home.php. Điều này được thực hiện dễ dàng với plugin Trường tùy chỉnh nâng cao (ACF). Bạn thậm chí có thể sử dụng "ACF Lite" nếu bạn muốn xây dựng những thứ này vào chủ đề của mình, thay vì sử dụng plugin. Đây là cách nhanh chóng và dễ dàng để thực hiện chính xác những gì bạn đang tìm kiếm.

  • Tạo Metabox tùy chỉnh chỉ hiển thị trên trang đang sử dụng tệp mẫu "home.php".
  • Dễ dàng thêm tệp này vào tệp mẫu home.php của bạn và tạo kiểu tùy chỉnh.

Tôi đã có thể xây dựng metabox và tạo một đầu ra được tạo kiểu tùy chỉnh vào tệp mẫu trong chưa đầy 5 phút. Đây là mã tôi đã sử dụng và quy trình từng bước.

  1. Cài đặt plugin ACF & Kích hoạt nó. (Tìm kiếm Trường tùy chỉnh nâng cao bằng "Elliot Condon", bạn có thể thực hiện việc này thông qua bảng điều khiển WordPress của mình hoặc bạn có thể thực hiện thủ công từ Kho lưu trữ Wordpress tại đây: http://wordpress.org/plugins/advified-custom-fields/
  2. Thêm khối mã được gắn nhãn "Hàm.php" vào tệp "function.php" của chủ đề đang hoạt động của bạn.

    if(function_exists("register_field_group")) 
    {
    register_field_group(array (
        'id' => 'acf_home-page-promotional-text',
        'title' => 'Home Page Promotional Text',
        'fields' => array (
            array (
                'default_value' => '',
                'formatting' => 'none',
                'key' => 'field_51c5184b7c590',
                'label' => 'Promo Text',
                'name' => 'promo_text',
                'type' => 'text',
                'instructions' => 'What promotional text would you like?',
            ),
        ),
        'location' => array (
            array (
                array (
                    'param' => 'page_template',
                    'operator' => '==',
                    'value' => 'home.php',
                    'order_no' => 0,
                    'group_no' => 0,
                ),
            ),
        ),
        'options' => array (
            'position' => 'normal',
            'layout' => 'no_box', // change 'no_box' to 'default' for box look.
            'hide_on_screen' => array (
            ),
        ),
        'menu_order' => 0,
    ));  
    }
  3. Chuyển đến trang chủ (trang này phải được sử dụng tệp mẫu home.php Chỉnh sửa trang-> Thuộc tính-> thả xuống mẫu).

  4. Chuyển đến tệp mẫu "home.php" của bạn và thêm mã sau đây để hiển thị nội dung của metabox tùy chỉnh, trong trường hợp này được đặt tên "tên" của 'promo lòng'.

    <?php if( get_field('promo_text') ) { ?>
        <h3>
            <?php echo get_field('promo_text'); ?>
        </h3>
    <?php } ?> 

    Lưu ý: get_field là một chức năng từ plugin ACF. Nếu bạn muốn sử dụng chức năng tích hợp WP, bạn có thể sử dụng: "get_post_meta ($ post_id, $ key, $ single);" thay thế. Đây là một ví dụ về điều đó.

    <?php
    if( get_post_meta($post->ID, $'promo_text', true) ) { ?>
    <h3>
    <?php echo get_post_meta($post->ID, 'promo_text', true); ?>
    </h3>
    <?php } ?>

Đây là những gì nó trông giống như khi chỉnh sửa trang chủ: nhập mô tả hình ảnh ở đây Liên kết hình ảnh lớn hơn

Bây giờ bạn sẽ thấy metabox. Lưu ý rằng bạn có thể dễ dàng thực hiện việc này mà không cần plugin, bạn chỉ cần đưa thư mục plugin vào thư mục chủ đề của mình và thêm tệp bao gồm () vào tệp tin.php của chủ đề đang hoạt động.

Tôi đánh giá cao plugin này ... nó rất trực quan và có nhiều tài liệu. Nếu bạn sử dụng plugin này và var_dump (), bạn có thể tìm ra mọi thứ rất nhanh.

Tôi hi vọng cái này giúp được!


2

Thật khó để nói từ câu hỏi của bạn chính xác những gì bạn đang làm nhưng nếu bạn đang sử dụng API tùy chọn , thì get_optionchấp nhận tham số thứ hai cho các giá trị mặc định. Từ Codex:

$no_exists_value = get_option('no_exists_value');
var_dump($no_exists_value); /* ouput false */

$no_exists_value = get_option('no_exists_value','default_value');
var_dump($no_exists_value); /* output default_value */

Nếu bạn đang sử dụng API tùy chỉnh chủ đề , thì get_theme_mod, như get_option, cũng chấp nhận tham số thứ hai cho các giá trị mặc định của bạn.

Với một trong hai tùy chọn, bạn sẽ cần tạo giao diện phụ trợ. Nếu bạn sử dụng API tùy chọn, thì bạn tạo một trang cấu hình add_menu_pagevà / hoặc add_submenu_page, hoặc một trong các chức năng liên quan này .

Nếu bạn sử dụng Trình tùy chỉnh chủ đề và tôi không chắc liệu điều đó có phù hợp với dự án của bạn không , có một bộ các chức năng và kỹ thuật khác nhau .


Cảm ơn bạn đã lưu ý. Để làm rõ: hãy tưởng tượng một trang web có trang chủ với một chuỗi văn bản ở giữa mà tôi cần để có thể cho phép người dùng quản trị viên (người không phải là công nghệ) cập nhật dễ dàng. Tôi đang cố gắng tìm ra cách trình bày một màn hình trong quản trị viên có nội dung "Bạn muốn chuỗi quảng cáo nào trên trang chủ? [__________________________]"? - API tùy chọn có vẻ như sẽ xử lý phụ trợ nhưng tôi không thấy có gì để làm với giao diện. Một widget sẽ là nó? Tôi đã làm một cái gì đó tương tự với các bài đăng & metabox tùy chỉnh, nhưng đây là trang chủ (home.php) vì vậy không có tùy chọn loại trang / metabox tùy chỉnh.
Eric

Ở mặt trước, bạn đang viết (hoặc dường như đang viết) một mẫu nên tất cả những gì bạn cần là viết get_optionhoặc get_theme_modvào mẫu đó.
s_ha_dum

Nhưng nếu tôi sử dụng get_option, làm thế nào để giao diện quản trị viên biết cách trình bày một trường cho người dùng với các tùy chọn? Nói cách khác: Tôi cần một cách đơn giản, phi công nghệ để quản trị viên cập nhật chuỗi này sẽ được hiển thị trên trang. Tôi không lo lắng về việc mã hóa mẫu, tôi chỉ không biết làm thế nào để nó xuất hiện trong quản trị viên.
Eric

FWIW Tôi đã chỉnh sửa câu hỏi của mình để làm rõ.
Eric

1

Nếu tôi hiểu chính xác câu hỏi của bạn, bạn muốn tạo bảng tùy chọn chủ đề để quản trị viên WordPress. có thể nhập (ví dụ) 'xin chào, thế giới!' trong hộp văn bản, nhấn Lưu thay đổi và ở mặt trước của trang web 'xin chào, thế giới!' sẽ được hiển thị bất cứ nơi nào bạn quyết định gọi nó trong mẫu của bạn.

Bạn có thể làm điều này bằng cách sử dụng API tùy chọn như s_ha_dum đã nói nhưng tôi đoán là nếu bạn nghĩ câu trả lời của anh ta không chứa đủ chi tiết thì điều bạn thực sự có nghĩa là nó phức tạp hơn bạn mong đợi.

Vì vậy, lời khuyên của tôi cho bạn là nên cài đặt plugin Option Tree cho phép bạn nhanh chóng và dễ dàng tạo bảng tùy chọn chủ đề (trong menu Giao diện) với trường văn bản có nội dung "Bạn muốn văn bản quảng cáo nào trên trang chủ? ". Sau đó, tất cả những gì bạn phải làm là gọi giá trị của tùy chọn đó trong mẫu home.php của bạn bằng cách sử dụng chức năng Cây tùy chọn.

Hi vọng điêu nay co ich!


1

Nếu tôi ở vị trí của bạn, tôi sẽ thêm từ tùy chỉnh vào trang quản trị / cấu hình của chủ đề. Điều này sẽ dễ dàng hơn cho tôi vì:

  • Chức năng liên quan đến sửa đổi chế độ xem đã có sẵn trong trang quản trị của chủ đề.
  • Tôi chỉ cần thêm một tham chiếu biến mới ở đó.
  • Quảng cáo xuất hiện khi tải chắc chắn là một phần của chủ đề cụ thể và do đó nên là một phần của điều khiển chủ đề.

Con đường phía trước sẽ là thêm một cái móc mới. Bạn có thể đi theo cách ưa thích của tôi ở đây hoặc cách móc chung chung chi tiết ở đây


1

Cách tôi sẽ tiếp cận nó (và tôi có một cái gì đó tương tự ngay bây giờ), là như sau:

  1. Tạo một mục menu mới trong menu cài đặt (cài đặt -> cài đặt trang chủ) hoặc tạo một mục menu trang chủ mới, ví dụ như Nhận xét, hoặc ở cuối menu của bạn, hoặc bất cứ nơi nào bạn muốn. Sau đó, trong mục menu mới, tạo trang của bạn.

  2. Trong trang được đề cập ở bước 1, bạn tạo tất cả cài đặt quản trị viên cho trang chủ (giải quyết hiện tại và tương lai).

  3. Đảm bảo rằng trang (và các liên kết menu của nó) chỉ có sẵn cho người dùng quản trị thông qua kiểm tra vai trò

  4. Nếu bạn thích, bạn có thể thực hiện giải pháp của mình ở trên như một phần của plugin tạo cụ thể trang cài đặt bổ sung và di chuyển nó ra khỏi chủ đề. Bởi vì đây không phải là vấn đề liên quan đến chủ đề, mà là quyền của khu vực quản trị.

Đối với tôi, như tôi đã đề cập trước đó, tôi đang thực hiện đôi khi dọc theo những dòng đó và tạo ra một plugin. Điều này giúp tôi trong tương lai, nếu tôi muốn thay đổi chủ đề của mình, tôi không cần phải xem lại những gì cần phải xóa và giữ trong mã của mình.

Hi vọng điêu nay co ich.

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.