2013-09-05 26 views
35

Tôi đã xây dựng chủ đề đầu tiên của mình trên WordPress và đã gặp sự cố khi thêm nội dung vào các phần khác nhau.Làm cách nào để tạo các phần có thể chỉnh sửa khác nhau trong một trang wordpress?

HTML của tôi là một chút như thế này,

<div id="maintext"> 
    <-- Text --> 
</div> 
<div id="products"> 
    <-- Text and Images --> 
</div> 
<div id="about_company"> 
    <-- Text boxes --> 
</div> 

Làm thế nào để đảm bảo nội dung bổ sung qua các biên tập viên wordpress thuộc div tương ứng? Đối với div "maintext" tôi sẽ tải nội dung từ chính trang đó, nhưng làm cách nào để thêm nội dung vào 2 divs động khác?

Tôi đã tìm kiếm trên một vài diễn đàn và nhiều người được đề xuất thêm nội dung bằng tiện ích, có cách nào có thể thực hiện mà không sử dụng tiện ích con không?

Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao.

Trả lời

62

Thật không may việc thêm nhiều trường có thể chỉnh sửa trong một trang không phải là đặc biệt dễ dàng khi sử dụng Wordpress.

Nhiều nhà phát triển WP mà tôi biết (bao gồm cả bản thân mình) dựa trên Advanced Custom Fields Plugin cho các trường nội dung bổ sung.

Các bước để thực hiện điều này:

1) Lắp đặt phích cắm ACF.
2) Trong vùng cài đặt cho ACF, hãy tạo một số trường mới.
3) Chỉ định các trường mới xuất hiện cho một trang hoặc tập hợp các trang cụ thể.
4) Cập nhật mẫu trang của bạn cho (các) trang đã cho để các trường mới được hiển thị.

Ví dụ: bạn có thể tạo một tập hợp các trường wysiwyg chuẩn và sau đó gán chúng cho trang 'tổng quan'. Hãy gọi những trường này: main_text, products_info và about_company. Khi các trường đã được tạo và gán cho một trang, khi bạn chỉnh sửa trang đó, các trường bổ sung sẽ có sẵn để chỉnh sửa.

Đối với các trường mới này, khách truy cập sẽ phải thêm các trường này vào mẫu trang bạn sử dụng cho trang tổng quan của mình. Mã có thể giống như sau:

<div id="maintext"> 
    <!-- Text --> 
    <?php if(get_field('main_text')){ //if the field is not empty 
     echo '<p>' . get_field('main_text') . '</p>'; //display it 
    } ?> 
</div> 
<div id="products"> 
    <!-- Text and Images --> 
    <?php if(get_field('products_info')){ //if the field is not empty 
     echo '<p>' . get_field('products_info') . '</p>'; //display it 
    } ?> 
</div> 
<div id="about_company"> 
    <!-- Text boxes --> 
    <?php if(get_field('about_company')){ //if the field is not empty 
     echo '<p>' . get_field('about_company') . '</p>'; //display it 
    } ?> 
</div> 

Có rất nhiều tốt examples here. Nếu bạn cảm thấy thực sự tham vọng, thay vì cài đặt plugin, bạn thậm chí có thể bao gồm ACF directly in your theme.

+0

Nếu đề nghị của tôi làm việc ra cho bạn vui lòng hãy dành một chút thời gian và chấp nhận câu trả lời bằng cách nhấp vào hộp kiểm lớn ở phía bên trái của câu trả lời này. Bạn thậm chí có được một số điểm làm điều đó :) – metaColin

+2

Đây chính xác là những gì tôi đang tìm kiếm. Một plugin tuyệt vời tôi phải nói, làm cho nó rất dễ dàng để thêm nhiều phần có thể chỉnh sửa để wordpress. Cảm ơn rất nhiều và xin lỗi vì trả lời muộn. –

+2

Giải pháp này làm việc tốt cho tôi. Vì các trường ACF của tôi là bắt buộc, tôi có thể đơn giản hóa mã một cách nhẹ nhàng bằng cách sử dụng * the_field *, mặc dù * get_field * hoạt động tốt khi tôi lặp qua một số bài đăng. Nếu giá trị trường không được thiết lập, nó sẽ chỉ xuất ra một chuỗi rỗng, có thể được sử dụng tùy thuộc vào đánh dấu của bạn. '' ' '' ' – RevNoah

4

Bạn đã có ba lựa chọn Tôi tin rằng:

  1. Tạo một khu vực tiện ích con nơi bạn có thể hiển thị nội dung trong một widget văn bản: http://codex.wordpress.org/Function_Reference/register_sidebar
  2. Tạo một mẫu nơi bạn sau đó nhận được nội dung của một trang khác: http://codex.wordpress.org/Page_Templates#File_Folders
  3. Tạo một hộp meta mới cho tất cả các trang của bạn: http://codex.wordpress.org/Function_Reference/add_meta_box

tôi tin rằng điều bạn đang tìm kiếm tôi s tùy chọn 2. Những người khác có định hướng trang web đầy đủ hơn, nếu bạn muốn các nội dung bổ sung để hiển thị trên mỗi trang duy nhất.

3
<div id="maintext"> 
    <?php the_content(); ?> 
</div> 
<div id="products"> 
    <?php // echo wp function to get product data; ?> 
</div> 
<div id="about_company"> 
    <?php // echo wp function to get about companydata; ?> 
</div> 
+0

Được thăng hạng để sử dụng câu trả lời không phải plugin. – developerbmw

+0

@developerbmw - Được bình chọn cho những gì, chính xác? Không có chi tiết kỹ thuật về điều này. Chức năng "wp bí ẩn để lấy dữ liệu sản phẩm" hoặc tương tự là gì? –

+0

@cale_b Đối với những người đến trễ, tôi sẽ lặp lại: "Được thăng hạng để sử dụng câu trả lời không phải plugin". – developerbmw

1

Nếu bạn đang viết chủ đề, có thể bạn muốn cân nhắc sử dụng khung WordPress nên bạn không phải bắt đầu từ đầu.

Nếu không phải như vậy, hãy nghĩ đến người dùng cuối. Họ sẽ thêm các phần vào các trang và bài đăng như thế nào? Họ sẽ phải di chuyển qua các địa điểm trong giao diện người dùng WordPress, hoặc họ sẽ thay vì mã người dùng ngắn?

Đề xuất của tôi là xây dựng một plugin hiển thị phần trong nội dung tài liệu. Hoặc nội dung phụ tùng nếu đúng như vậy.

Tôi đã viết một đoạn mã nhỏ để minh họa cách bạn có thể thực hiện một điều như vậy, và cũng vì tôi cần nó ngay bây giờ: D. Bạn có thể tìm thấy nó trên github đây https://github.com/lionpage/Front-Office-Document-Sections

Hope this helps

0

tôi đã chạy vào vấn đề này nhiều lần bây giờ, và trong khi câu hỏi là 3 tuổi, tôi nghĩ rằng nó vẫn còn khá hiện hành. Tôi đã thành công sử dụng Nhiều Khối nội dung plugin đôi khi bây giờ:

https://ltz.wordpress.org/plugins/multiple-content-blocks/

Sau khi cài đặt plugin, bạn chỉ có thể bao gồm the_block trong mẫu của bạn:

<div id="maintext"> 
    <?php the_content(); ?> 
</div> 
<div id="products"> 
    <?php the_block('products') ?> 
</div> 
<div id="about_company"> 
    <?php the_block('company') ?> 
</div> 
+2

Phát triển bị ngừng. Nhà phát triển đề xuất ACF thay thế: http://www.advancedcustomfields.com/ – voidstate

Các vấn đề liên quan