Php 如何从wordpress中的代码中硬编码小部件?

Php 如何从wordpress中的代码中硬编码小部件?,php,wordpress,Php,Wordpress,我的站点上有一个小部件,我可以使用小部件区域添加它。然而,我需要硬编码,因为如果我通过小部件添加它,它会出现在30个不同的页面上。在这一点上,我只能转到所有这30页并添加display:none以单独隐藏每一页。那会很糟糕,而且对我的网站的SEO也不好 我知道调用小部件的php文件。以下是该php文件的代码: [守则] <?php add_action('widgets_init', 'register_featured_jobs_widget'); function register_

我的站点上有一个小部件,我可以使用小部件区域添加它。然而,我需要硬编码,因为如果我通过小部件添加它,它会出现在30个不同的页面上。在这一点上,我只能转到所有这30页并添加display:none以单独隐藏每一页。那会很糟糕,而且对我的网站的SEO也不好

我知道调用小部件的php文件。以下是该php文件的代码:

[守则]

<?php

add_action('widgets_init', 'register_featured_jobs_widget');
function register_featured_jobs_widget() {
    register_widget('PricerrTheme_featured_jobs');
}

class PricerrTheme_featured_jobs extends WP_Widget {

    function PricerrTheme_featured_jobs() {
        $widget_ops = array( 'classname' => 'featured-jobs', 'description' => 'Show latest featured jobs' );
        $control_ops = array( 'width' => 200, 'height' => 250, 'id_base' => 'featured-jobs' );
        $this->WP_Widget( 'featured-jobs', 'PricerrTheme - Featured Jobs', $widget_ops, $control_ops );
    }

    function widget($args, $instance) {
        extract($args);

        echo $before_widget;

        if ($instance['title']) echo $before_title . apply_filters('widget_title', $instance['title']) . $after_title;
        $limit = $instance['show_jobs_limit'];

        if(empty($limit) || !is_numeric($limit)) $limit = 5;

                 global $wpdb;  
                 $querystr = "
                    SELECT distinct wposts.* 
                    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta, $wpdb->postmeta wpostmeta2 , $wpdb->postmeta wpostmeta4
                    WHERE wposts.ID = wpostmeta.post_id AND wposts.ID = wpostmeta2.post_id AND wposts.ID = wpostmeta4.post_id
                    AND wpostmeta.meta_key = 'closed' 
                    AND wpostmeta.meta_value = '0' 

                    AND wpostmeta4.meta_key = 'active' 
                    AND wpostmeta4.meta_value = '1' 

                    AND wpostmeta2.meta_key = 'featured' 
                    AND wpostmeta2.meta_value = '1' AND 

                    wposts.post_status = 'publish' 
                    AND wposts.post_type = 'job' 
                    ORDER BY wposts.post_date DESC LIMIT ".$limit;

                 $pageposts = $wpdb->get_results($querystr, OBJECT);

                 ?>

                     <?php $i = 0; if ($pageposts): ?>
                     <?php global $post; ?>
                     <?php foreach ($pageposts as $post): ?>
                     <?php setup_postdata($post); ?>


                     <?php PricerrTheme_small_post(); ?>


                     <?php endforeach; ?>
                     <?php else : ?> <?php $no_p = 1; ?>
                       <div class="padd100"><p class="center"><?php _e("Sorry, there are no posted jobs yet.",'PricerrTheme'); ?></p></div>

                     <?php endif; ?>

                     <?php

        echo $after_widget;
    }

    function update($new_instance, $old_instance) {

        return $new_instance;
    }

    function form($instance) { ?>
        <p>
            <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title'); ?>:</label>
            <input type="text" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" 
            value="<?php echo esc_attr( $instance['title'] ); ?>" style="width:95%;" />
        </p>


        <p>
            <label for="<?php echo $this->get_field_id('show_jobs_limit'); ?>"><?php _e('Show jobs limit'); ?>:</label>
            <input type="text" id="<?php echo $this->get_field_id('show_jobs_limit'); ?>" name="<?php echo $this->get_field_name('show_jobs_limit'); ?>" 
            value="<?php echo esc_attr( $instance['show_jobs_limit'] ); ?>" style="width:20%;" />
        </p>




    <?php 
    }
}



?>

假设您的页面slug是
“我的页面”
,那么您可以在代码开头执行此操作:

<?php

add_action('widgets_init', 'register_featured_jobs_widget');
function register_featured_jobs_widget() {

    if ( is_page( "my_page" ) ){
       register_widget('PricerrTheme_featured_jobs');
    }

}

要在何处显示小部件?请注意,我的意思是你只想在特定页面上显示小部件??谢谢你的回答。我真的解决了我的问题。我使用了一个Jetpack插件可见性模块,它允许您指定小部件的确切显示位置。就这样:)