web-dev-qa-db-fra.com

Choisissez d'afficher les vues de publication avec un panneau d'options

Les affichages de publication sont activés et j'essaie de créer une option du panneau d'options permettant aux utilisateurs de choisir s'ils souhaitent afficher des vues de publication dans chaque publication . . S'ils choisissent "Oui", ils verront s'afficher des vues après. S'ils choisissent "Non", ils ne le feront pas.

J'espère que quelqu'un pourra m'aider à créer la bonne get_option pour afficher les vues de publication en fonction de ce qui est choisi dans le panneau d'options.

Ce que j'ai essayé de saisir mes vues de publication, et cela n'a pas fonctionné:

<?php
if (get_option('to_post_views') != 'No' and function_exists('post_views_count'))
    post_views_count(); ?>

Sans les options activées, je peux récupérer mes vues de publication avec les éléments suivants:

<!-- Remember Post Views -->
<?php setPostViews(get_the_ID()); ?>

<!-- Display Post Views-->
<?php echo getPostViews(get_the_ID()); ?>

Ma fonction pour les vues de publication:

// Post views
function getPostViews($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0 View";
    }
    return $count.' Views';
}
function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}

remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

Mon tableau pour le panneau d'options:

array( "name" => "Display post views?",
    "desc" => "Choose whether or not to display post views.",
    "id" => $shortname."_post_views",
    "type" => "select",
    "options" => array("Yes", "No"),
    "std" => "Yes"),
1
AndrettiMilas

Donc, cela va dans votre fichier themes functions.php. Cela ajoute une metabox sur le côté droit de votre écran dans les publications intitulées "Activer les vues de publication sur cette publication": enter image description here

// Hook into WordPress
add_action( 'admin_init', 'add_custom_metabox' );
add_action( 'save_post', 'wpse_16722_save_post_views_value' );

/**
 * Add meta box
 */

function add_custom_metabox() {
    add_meta_box( 'enable_post_views', __( 'Enable Post Views on this Post' ), 'wpse_16722_enable_post_views', 'post', 'side', 'low' );
}

/**
 * Display the metabox
 */

function wpse_16722_enable_post_views() {
    global $post;
    $enable_views = get_post_meta( $post->ID, 'enable_views', true );

    ?>
        <p>
            <input type="checkbox" id="enable-views" name="enable_views" value="1" <?php checked( $enable_views, 1 ); ?> style="margin-right: 10px;">
            <label for="enable-views"><?php _e('Enable Post Views on this Post', 'domain'); ?></label>
        </p>

<?php
}

/**
 * Process the custom metabox fields
 */

function wpse_16722_save_post_views_value( $post_id ) {
    global $post;   

    if( isset( $_POST['enable_views'] ) ? $_POST['enable_views'] : '' ) {
        update_post_meta( $post->ID, 'enable_views', $_POST['enable_views'] );
    } else {
        delete_post_meta( $post->ID, 'enable_views' );
    }
}

/**
 * Get and return the values for the URL and description
 */

function wpse_16722_get_post_views_box() {
    global $post;
    $enable_views = get_post_meta( $post->ID, 'enable_views', true );

    return $enable_views;
}

Il enregistre la valeur en tant que métadonnées sur vos publications. Le meta_key est "enable_views" et vous pouvez le voir dans votre base de données sous yourprefix_postmeta.

Lorsque vous avez enregistré la valeur true sur un message. Vous pouvez simplement vérifier ceci sur le post où vous voulez que le compteur ressemble à ceci:

// Inside the loop add this 
// Get the values from "enable_views"
// If true add the views counter

$is_enabled = get_post_meta( $post->ID, 'enable_views', true );

if( $is_enabled ) {
    echo getPostViews( post->ID ); 
}

Mise à jour du nouveau 19.11

Afficher uniquement les vues lorsque les options sont "Oui", mettez ceci dans votre single.php

// Get the options
$options = get_option('to_post_views');

// Echo if options is Yes
if( $options == 'Yes' ) {
    echo getPostViews( get_the_ID() );
}
2
Pontus Abrahamsson