2012-03-11 13 views
6

Đây là nỗ lực đầu tiên của tôi trong việc viết mã một chủ đề wordpress tùy chỉnh và tôi sắp sửa ở đó. Có một vài lỗi như có bất cứ điều gì, nhưng tôi đã thử một vài tùy chọn khác nhau để sửa chúng nhưng không thành công.Làm cách nào để sửa một chủ đề tùy chỉnh wordpress để hoạt động với các plugin?

Liên kết là www.studiosimplicit.com/wp.

Vấn đề đầu tiên của tôi là với thanh trượt nivo trên trang sự kiện (Www.studiosimplicit.com/wp/events). Ban đầu tôi đã gặp sự cố với chính plugin, nơi các hình ảnh được xếp chồng lên nhau. Để sửa lỗi này, tôi tự đặt mã để gọi trong tệp nivo .js và điều đó dường như khắc phục sự cố đó. Nhưng bây giờ hình ảnh tải là có nhưng những hình ảnh không tải.

Tôi đã kiểm tra URL của hình ảnh và đó không phải là vấn đề. Tôi cũng đã kích hoạt tính năng "post-thumbnails" (như được đề xuất trên trang web nivoslider như là một sửa chữa phổ biến cho vấn đề của tôi) nhưng điều đó dường như không sửa nó. Nó không có giá trị gì khi tôi chuyển sang một chủ đề mặc định, thanh trượt hoạt động tốt. Đó là khi tôi kích hoạt chủ đề tùy chỉnh của tôi mà nó phá vỡ.

Vấn đề thứ hai của tôi là với plugin được cho là đặt hình nền toàn màn hình, được tự động thay đổi kích thước để vừa với chiều rộng của trình duyệt. Một lần nữa, các plugin hoạt động khi tôi chuyển sang một chủ đề mặc định nhưng nó phá vỡ khi tôi chuyển sang chủ đề tùy chỉnh của tôi.

Vui lòng trợ giúp!

Trả lời

18

Bằng âm thanh của nó, chủ đề tùy chỉnh của bạn thiếu các móc phổ biến cho phép plugin thay đổi/xuất mã của chúng.

Để có một ví dụ đơn giản, mỗi chủ đề phải có cuộc gọi đến wp_head() ở đâu đó trong phần <head> của trang đầu ra. Điều này cho phép một plugin để "móc" vào <head> của bạn, và ví dụ, mã đầu ra để tải Javascript của nó.

Đây là ví dụ thực tế. Các chủ đề WordPress Twentyeleven có này trong tập tin header.php của nó (theo truyền thống một phần của một chủ đề mà kết quả đầu ra phần <head> của trang bất kỳ):

... other <head> stuff 
    wp_head(); 
?> 
</head> 

Các WP NIVO Slider sử dụng mã này khi nó gọi wp_enqueue_script, ví dụ, trong tệp wp-nivo-slider.php của nó. Đằng sau hậu trường, wp_enqueue_script sử dụng wp_head() móc trong chủ đề Twentyeleven để sản xuất các Javascript yêu cầu bao gồm trong phần <head> (thông qua một con đường hơi vòng quanh mà kết thúc trong wp_print_head_scripts theo mặc định.)

Vì vậy, về cơ bản, nếu một công trình Plugin với một chủ đề được cung cấp, nhưng không hoạt động với chủ đề tùy chỉnh của bạn, nhiệm vụ của bạn là tìm các móc bị thiếu trong chủ đề của bạn mà plugin đang cố gắng sử dụng.

Nếu bạn kiểm tra WordPress Theme Development documentation bạn sẽ tìm thấy danh sách các móc mà chủ đề sẽ bao gồm trong phần "Plugin API plugin".Đây là, cụ thể:

  • wp_head
  • wp_footer
  • wp_meta
  • comment_form

Những người quan trọng đối với hầu hết các plugin sẽ wp_headwp_footer. Đây là nơi hầu hết Javascript được đưa vào, trong phần đầu hoặc phần chân trang (ngay trước thẻ đóng <body>.)

Hầu hết các plugin như thanh trượt Javascript, thư viện hình ảnh, v.v. sẽ chỉ thêm một hoặc hai tập lệnh mới vào phần <head> hoặc chân trang của trang web và có thể bao gồm các tệp CSS để tạo kiểu cho nội dung của chúng, một lần nữa trong phần <head>, vì vậy, hai phần đó thường là móc duy nhất mà chúng cần. Vì vậy, lời khuyên ban đầu của tôi là đảm bảo chủ đề tùy chỉnh của bạn bao gồm một cuộc gọi đến wp_head() ở cuối phần <head> của nó (sao chép mã từ chủ đề làm việc mà bạn đã có) và cũng gọi tới wp_footer(), chỉ cần trước thẻ đóng </body>. Các cơ hội tốt sẽ làm cho hầu hết các plugin dựa trên Javascript hoạt động.

+0

Tuyệt vời! Ngay sau khi tôi cắm các móc vào, mọi thứ bắt đầu hoạt động. Chắc chắn là một trải nghiệm học tập đối với tôi về mặt chữ viết. Nó giúp tôi có một trang web dễ chuyển đổi sang wordpress. Giải thích rất chi tiết. Tôi đánh giá cao thời gian và sự kiên nhẫn của bạn. CẢM ƠN BẠN! – giwook

1

Chỉ cần cho các hồ sơ: Tôi đã có một vấn đề tương tự và tôi đã phải thay thế dòng

<?php echo get_the_content() ?> 

với điều này một:

<?php echo the_content() ?> 

Nhưng tôi cũng phải bao gồm wp_head và wp_foot như được giải thích bởi Matt.

0

chỉ bao gồm

<?php include_once(ABSPATH . 'wp-admin/includes/plugin.php'); ?> 
<?php wp_head()?> 

trước đầu và sau đó nó sẽ chắc chắn làm việc.