Maison  >  Article  >  Tutoriel CMS  >  Comment ajouter Meta Box à WordPress

Comment ajouter Meta Box à WordPress

藏色散人
藏色散人avant
2021-01-12 16:59:042799parcourir

Ce qui suit est une colonne de tutoriel sur la façon d'ajouter Meta Box dans WordPress, j'espère que cela sera utile aux amis dans le besoin. ! La façon d'ajouter une Meta Box dans WordPress nécessite l'utilisation de l'action add meta boxes. Cette action nous permet d'enregistrer Meta Box pour n'importe quel type d'article. Dans cette action, nous devons utiliser la méthode add_meta_box() pour. ajouter des informations associées à Meta Box. Le code est le suivant

function add_rating_meta_box($post_type, $post) {   
    // 需要哪些post type添加推荐指数 Meta Box   
    $types = array( 'post', 'page' );   

    foreach ( $types as $type ) {   
        add_meta_box(   
            'rating_meta_box_id', // Meta Box在前台页面中的id,可通过JS获取到该Meta Box   
            '推荐指数', // 显示的标题   
            'render_rating_meta_box', // 回调方法,用于输出Meta Box的HTML代码   
            $type, // 在哪个post type页面添加   
            'side', // 在哪显示该Meta Box   
            'default' // 优先级   
        );   
    }   
}   
add_action( 'add_meta_boxes', 'add_rating_meta_box' );

Ici, nous définissons le champ personnalisé dont Post et Page doivent recommander l'index dans le tableau $types, puis disons à WordPress d'utiliser la méthode "render_rating_meta_box" pour rendre la Meta Box, positionnez-la dans la barre latérale. Comme il n'y a pas beaucoup de contenu, la barre latérale est suffisante. S'il y a plus de contenu, vous pouvez changer « côté » en « avancé » afin que la Meta Box soit rendue dans la zone de contenu principale.

Voyons ensuite comment il est rendu

function render_rating_meta_box( $post ) {   
    // 添加 nonce 项用于后续的安全检查   
    wp_nonce_field( 'rating_nonce_action', 'rating_nonce_name' );   

    // 获取推荐指数的值   
    $rating_key = 'rating';   
    $rating_value = get_post_meta( $post->ID, $rating_key, true );   
    $rating_value = (int)$rating_value;   

    $html = &#39;<select name="rating_field">&#39;;   
    for ($i = 0; $i <= 10; $i++) {   
        $selected = &#39;&#39;;   
        if ($i == $rating_value) {   
            $selected = &#39;selected="selected"&#39;;   
        }   
        $html .= sprintf(&#39;<option value="%s" %s>%s星</option>&#39;, $i, $selected, $i/2);   
    }   
    $html .= &#39;</select>&#39;;   
    echo $html;   
}

Ici, nous utilisons d'abord wp_nonce_field() pour ajouter un champ occasionnel pour le contrôle de sécurité, puis lisons la valeur de l'index recommandé et bouclez 1 ~ 10 vers afficher des valeurs facultatives S'il est identique à l'index recommandé, il sera sélectionné par défaut. Grâce à la liste déroulante, le problème de la saisie peu pratique et de l'impossibilité de vérifier peut être résolu. Retenez ici la valeur de l'attribut name de la liste déroulante (rating_field), qui sera utilisé pour obtenir la valeur sélectionnée dans le code suivant.

Enfin, lorsque l'article est enregistré, l'index de recommandation doit également être enregistré

function save_rating_post_data( $post_id ) {   
    // 检查nonce是否设置   
    if (!isset($_POST[&#39;rating_nonce_name&#39;])) {   
        return $post_id;   
    }   
    $nonce = $_POST[&#39;rating_nonce_name&#39;];   

    // 验证nonce是否正确   
    if (!wp_verify_nonce( $nonce, &#39;rating_nonce_action&#39;)) {   
        return $post_id;   
    }   

    // 如果是系统自动保存,则不操作   
    if ( defined( &#39;DOING_AUTOSAVE&#39; ) && DOING_AUTOSAVE ) {   
        return $post_id;   
    }   

    // 检查用户权限   
    if ($_POST[&#39;post_type&#39;] == &#39;post&#39;) {   
        if (!current_user_can(&#39;edit_post&#39;, $post_id )) {   
            return $post_id;   
        }   
    }   

    $rating_key = &#39;rating&#39;;   
    // 获取数据   
    $rating_value = $_POST[&#39;rating_field&#39;];   

    // 更新数据   
    update_post_meta( $post_id, $rating_key, $rating_value );   
}   
add_action( &#39;save_post&#39;, &#39;save_rating_post_data&#39; );

Une série de vérifications sont effectuées ici, y compris la vérification occasionnelle qui vient d'être définie, la vérification des autorisations utilisateur et exclusion automatique Condition enregistrée. Utilisez ensuite la méthode update_post_meta() pour stocker les données dans la base de données.

À ce stade, nous avons terminé la modification du champ personnalisé de l'index de recommandation, et pouvons facilement sélectionner l'index de recommandation de l'article.

Attendez. . .

Des amis prudents ont peut-être découvert qu'après avoir appliqué les trois morceaux de code ci-dessus, la fonction peut effectivement être réalisée. Cependant, sous la zone de colonne personnalisée par défaut, vous pouvez voir qu'il existe une colonne appelée « note », qui est l'index de recommandation que nous venons de sélectionner. Si vous ne souhaitez pas qu'il soit affiché sous la colonne personnalisée, vous pouvez modifier $rating_key dans le code ci-dessus pour qu'il commence par un trait de soulignement, afin que WordPress ne l'affiche pas. Notez qu'il y a deux endroits à changer.

// 原来的代码   $rating_key = &#39;rating&#39;;   
// 改后的代码   $rating_key = &#39;_rating&#39;;

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer