Tôi đã cố tải tập lệnh và kiểu cho tiện ích WordPress với các điều kiện sau ...
- Các tập lệnh PHẢI tải trong ĐẦU (nếu không chúng bị hỏng).
- Các tập lệnh CHỈ phải tải khi tiện ích thực sự hiển thị (chúng khá nặng).
Tôi đã thực hiện rất nhiều tìm kiếm và đây dường như là một vấn đề phổ biến (chưa được giải quyết) ... nhưng tôi hy vọng ai đó ở đây đã thực hiện thành công một cách giải quyết.
Đây là điều tốt nhất tôi có được cho đến nay ...
Sau đây là một widget đơn giản in văn bản sang thanh bên. Nó tải thành công jQuery một cách có điều kiện (khi tiện ích thực sự được hiển thị) ... mặc dù chỉ có trong phần chân trang! (Lưu ý: nó cũng có thể chỉ hoạt động trên WordPress 3.3 , mặc dù bản hack này có thể cung cấp khả năng tương thích ngược).
class BasicWidget extends WP_Widget
{
function __construct() {
parent::__construct(__CLASS__, 'BasicWidget', array(
'classname' => __CLASS__,
'description' => "This is a basic widget template that outputs text to the sidebar"
));
}
function form($instance) {
$instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
$title = $instance['title'];
?>
<p><label for="<?php echo $this->get_field_id('title'); ?>">Title: <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></label></p>
<?php
}
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['title'] = $new_instance['title'];
return $instance;
}
function widget($args, $instance) {
extract($args, EXTR_SKIP);
echo $before_widget;
$title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']);
if (!empty($title))
echo $before_title . $title . $after_title;;
echo "<h1>This is a basic widget!</h1>";
echo $after_widget;
// if we're echoing out content, enqueue jquery.
if (!empty($after_widget)) {
wp_enqueue_script('jquery');
}
}
}
add_action( 'widgets_init', create_function('', 'return register_widget("BasicWidget");') );
Có vẻ như một khi WordPress bắt đầu xử lý các widget, đã quá muộn để ghi danh (hoặc thậm chí hủy đăng ký một cái gì đó đã được xử lý trước đó).
Bất kỳ ý tưởng sẽ được nhiều đánh giá cao!
Dấu.