如何使Widget有条件地出现

时间:2019-05-25 作者:Asbjørn Skødt

我希望你能帮忙。

我有两段代码,我不知道如何配对。我希望我的小部件只出现在帖子上,而且只出现在选择了一个特定类别的时候。每当我尝试将条件放在公共函数前面时,它都会在条件行上通知php错误。

这是我的条件代码:

if (is_single() && in_category(\'pladeanmeldelser\'))
以下是我的显示小部件代码:

public function widget( $args, $instance ) {
  $title = apply_filters( \'widget_title\', $instance[ \'title\' ] );
  $selskab = get_field( "selskab" );
  $related = get_field( "related" );
  $udgivet = get_field( "udgivet" );
  echo $args[\'before_widget\'];
    if ( $title ) {
    echo $args[\'before_title\'] . $title . $args[\'after_title\']; } ?>

    <?php   global $post;
    if ( has_post_thumbnail( $post->ID ) )
    echo get_the_post_thumbnail( $post->ID, \'medium\' ); 
    ?>

<div class="textwidget">
    <?php if(isset($selskab)) { echo "<p><strong>Pladeselskab:</strong> $selskab </p>"; } ?>
    <?php if(isset($related)) { echo "<p><strong>Musikalske slægtninge:</strong> $related </p>"; } ?>
    <?php if(isset($udgivet)) { echo "<p><strong>Udgivelsesår:</strong> $udgivet </p>"; } ?>
</div>

  <?php echo $args[\'after_widget\'];
}
}

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

您应该将条件放在widget() 功能:

public function widget( $args, $instance ) {
    // Not single post or not in the pladeanmeldelser category.
    if ( ! is_single() || ! in_category(\'pladeanmeldelser\') ) {
        return;
    }

    $title = apply_filters( \'widget_title\', $instance[ \'title\' ] );
    // ... other code.

}
这应该行得通。

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'