是否显示特色图像的选项

时间:2015-12-18 08:01:14

标签: wordpress wordpress-theming

Wordpress 4.3.1

您好,

这是我在stackoverflow上的第一篇文章,我希望我做的一切都正确。

我需要一个允许输出特色图像的功能。只是不上传图像是没有选择的,因为在任何情况下都需要缩略图旁边的缩略图。

需要以下组合:

  1. 缩略图和精选图片完全相同
  2. 文章中的缩略图和第一张图片不同
  3. 缩略图,没有精选图片
  4. 我需要案例2和3的功能。在案例2中,将通过编辑器集成特色图像。

    我已经找到了这个插件:https://wordpress.org/plugins/hide-featured-image/

    但是,这只能用CSS解决任务:

    .has-post-thumbnail img.wp-post-image{ display: none; }
    

    但是我想这张图片甚至没有被推出并加载到浏览器中。

    我在网上找到了以下解决方案。它到目前为止工作,复选框显示在特色图像框内,如果在更新文章后检查或不检查状态,它也会保存状态。但是,特色图像继续输出,我不明白出了什么问题。

    这是我复制到functions.php的代码:

    /**
     * Adds a checkbox to the featured image metabox.
     *
     * @param string $content
     */
      
    add_filter( 'admin_post_thumbnail_html', 'optional_featured_image', 10, 2 );
    /**
     * Add a 'hide the featured image' checkbox to the Featured Image area
     */
    function optional_featured_image( $content, $post_ID ) {
    
        $content .= '<div class="hide-feat-image">';
        // add our nonce field
        $content .= wp_nonce_field( 'display_featured_image_nonce', 'display_featured_image_nonce', true, false );
        // create our checkbox
        $content .= '
        <input style="margin: 5px;" type="checkbox" id="display-featured-image" name="display_featured_image" '. checked( get_post_meta( $post_ID, 'display_featured_image', true ), true, false ) .' value="1"/>
        <label for="display-featured-image">Hide on post page?</label>
        ';
        $content .= '</div><!-- hide-feat-image -->';
        // return our appended $content
        return $content;
    }
    
    add_action( 'save_post', 'save_optional_featured_image' );
    /**
     * Save our 'hide the featured image' checkbox to the Featured Image area
     */
    function save_optional_featured_image( $post_id ) {
    
        if (
            // check nonce
            !isset( $_POST['display_featured_image_nonce'] )
            || !wp_verify_nonce( $_POST['display_featured_image_nonce'], 'display_featured_image_nonce')
            // make sure user is allowed to edit posts
            || !current_user_can( 'edit_post', $post_id )
        )
            return;
    
        // sanitize our input to yes or no
        $display = isset( $_POST["display_featured_image"] ) && $_POST["display_featured_image"] ? true : false;
        // update our post
        update_post_meta( $post_id, 'display_featured_image', $display );
    }  
    

    这是WP片段,我在模板中用于输出:

    <?php the_post_thumbnail('header-image'); ?> 
    

    我很感激任何建议!提前感谢您的努力!

1 个答案:

答案 0 :(得分:0)

首先,我会在数据库中检查这个'optional_featured_image'参数实际上是由您的代码设置的。检查prefix_postmeta表并查找您正在编辑的帖子。

输出模板时,您需要有一个条件来检查您设置的'display_featured_image'参数。否则the_post_thumbnail()将始终显示。

在模板中试用此代码:

<?php
$optional_featured_image = get_post_meta( get_the_ID(), 'display_featured_image', true);
if( !$optional_featured_image )
    the_post_thumbnail('header-image');
?>