【问题标题】:echo not displaying text in a wordpress widgetecho 不在 wordpress 小部件中显示文本
【发布时间】:2018-07-02 15:56:31
【问题描述】:

所以我正在尝试制作一个 WordPress 小部件来回显电影输入。我已将回显放在小部件功能的第 10 行,但它不会回显输入。现在我知道我可以把它换成 echo $instance['movie']; ,但是我想测试我的 movie_search 方法是否有效,但事实并非如此。如果这个答案真的很愚蠢,任何帮助表示赞赏和抱歉,我对编码还是很陌生。

<?php  
public function widget( $args, $instance) {

    echo $args['before_widget']; 
    if (!empty( $instance['tmdbapikey'] ) ) {
        echo $args['before_tmdbapikey'].apply_filters(  
                'widget_tmdbapikey', 
                $instance['tmdbapikey']
            ).$args['after_tmdbapikey'];
    }

    //widget content output
    echo $movie_query;

    // whatever you want to display after widget (<div>, etc)
    echo $args['after_widget']; 
}

public function form( $instance ) {
    $tmdbapikey = !empty( $instance['tmdbapikey'] ) 
            ? $instance['tmdbapikey'] 
            : esc_html__( '', 'mpd_domain' );
<p>   
    <label for="<?php echo esc_attr($this->get_field_id('movie')); ?>">
        <?php esc_attr_e('movie:', 'mpd_domain'); ?>
    </label> 

    <input
        class="widefat" 
        id="<?php echo esc_attr( $this->get_field_id( 'movie' ) ); ?>"
        name="<?php echo esc_attr( $this->get_field_name( 'movie' ) ); ?>" 
        type="text" 
        value="<?php echo esc_attr( $movie ); ?>">
</p>

这是保存输入的用户字符串的方法。

public function update( $new_instance, $old_instance ) {
    $instance = array();

    $instance['tmdbapikey'] = (!empty($new_instance['tmdbapikey']))
            ? sanitize_text_field( $new_instance['tmdbapikey'] ) 
            : '';

    $instance['movie'] = (!empty($new_instance['movie'])) 
            ? sanitize_text_field($new_instance['movie']) 
            : '';

    $instance['size'] = (!empty( $new_instance['size'])) 
            ? sanitize_text_field($new_instance['size']) 
            : '';

    $instance['description'] = (!empty( $new_instance['description']))
            ? sanitize_text_field($new_instance['description']) 
            : '';

    return $instance;
}

电影搜索方法

public function movie_search(){
    //copies inputted data to movie variable
    $movie_query = $instance['movie'];
}

【问题讨论】:

  • 明显错误很明显?您不是回显电影搜索,而是变量,可能为空。尝试在echo $movie_query; 之前添加$movie_query = movie_search();
  • 感谢您的帮助,是的,我知道了。

标签: php wordpress


【解决方案1】:

必须将$instance 传递给$movie_search 方法。所以该行应该是public function movie_search($instance),因为该变量不是我最初认为的全局变量,而是一个空变量。还需要在电影搜索方法的最后一行添加return $movie_search

因此我不得不将第 10 行更改为 echo $this-&gt;movie_search($instance)

【讨论】:

  • 也是一个解决方案。我很高兴你解决了它。干得好!
  • 谢谢,我也只是想知道,因为我对 PHP 还很陌生,所以推荐最好的学习方法。
  • 对我来说,这是反复试验,大量(首选搜索引擎)查询和如此多的脏话对我的无法运行的代码大喊大叫 :)
  • 哈哈,这听起来和我做的一样。
猜你喜欢
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2018-03-14
  • 2011-10-08
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
相关资源
最近更新 更多