为了账号安全,请及时绑定邮箱和手机立即绑定

将帖子中的自定义元框更改为页面

将帖子中的自定义元框更改为页面

PHP
侃侃尔雅 2022-07-09 10:33:35
我根据这个播放列表在自定义帖子中开发了 Meta Box 插件。(我对此做了一些自定义)在这里,他使用插件创建了一个自定义帖子,并对该相关帖子执行所有元框操作。它工作正常。但我的要求是在页面中显示这个元框。这是我的代码。metabox.php(插件代码)<?phpfunction wpl_owt_custom_init_cpt(){    $args = array(        'public' => true,        'label' => 'Books',        'supports' => array('title' , 'editor' , 'author' , 'thumbnail' , 'excerpt' , 'comments')    );    register_post_type('book' , $args);   }   add_action('init', 'wpl_owt_custom_init_cpt'); function wpl_owt_register_metabox_cpt(){        //custom post type        add_meta_box("owt-cpt-id" , "Contact Details" , "wpl_owt_book_function" , "book" , "normal" , "high");   }   add_action("add_meta_boxes_book" , "wpl_owt_register_metabox_cpt");   /**********Callback function for metabox at custom post type book******************/ function wpl_owt_book_function( $post ) {    //echo "<p>Custom metabox for custom post type</p>";    define("_FILE_", "_FILE_");    wp_nonce_field( basename(_FILE_), "wp_owt_cpt_nonce");    echo "<label for='txtPhoneNum'>Phone</label><br>";    $phone_num = get_post_meta($post->ID, "telNo" , true);    echo "<input type ='tel' name = 'txtPhoneNum' value = '" . $phone_num . "'' placeholder = 'Phone Number' /><br><br>";    echo "<label for='txtEmail'>Email</label><br>";    $email = get_post_meta($post->ID, "email" , true);    echo "<input type ='email' name = 'txtEmail' value = '" . $email . "'' placeholder = 'Email Address' /><br><br>";    echo "<label for='txtHours'>Hours of Operation</label><br>";    $hours = get_post_meta($post->ID, "hourofOps" , true);    echo "<input type ='text' name = 'txtHours' value = '" . $hours . "'' placeholder = 'Working Hours' /><br><br>";}add_action("save_post" , "wpl_owt_save_metabox_data" , 10 , 2);function wpl_owt_save_metabox_data($post_id, $post){    //verify nonce    if(!isset($_POST['wp_owt_cpt_nonce']) || !wp_verify_nonce($_POST['wp_owt_cpt_nonce'], basename(_FILE_))){        return $post_id;    }
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

代替


function wpl_owt_custom_init_cpt(){

    $args = array(

        'public' => true,

        'label' => 'Books',

        'supports' => array('title' , 'editor' , 'author' , 'thumbnail' , 'excerpt' , 'comments')

    );

    register_post_type('book' , $args);

   }

   add_action('init', 'wpl_owt_custom_init_cpt');

有了这个


add_action('add_meta_boxes', 'wpl_owt_register_metabox_cpt');

function wpl_owt_register_metabox_cpt()

{

    global $post;


    if(!empty($post))

    {

        $pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);


        if($pageTemplate == 'page-contact.php' )

        {

            add_meta_box(

                'owt-cpt-id', // $id

                'Contact Details', // $title

                'wpl_owt_book_function', // $callback

                'page', // $page

                'normal', // $context

                'high'); // $priority

        }

    }

}

并替换这个


$post_slug = "book";

    if($post_slug != $post->post_type){

        return;

    }

有了这个。


$post_slug = "page";

    if($post_slug != $post->post_type){

        return;

    }

希望这会成功。


查看完整回答
反对 回复 2022-07-09
?
SMILET

TA贡献1796条经验 获得超4个赞

请看如下:


<?php


function add_custom_meta_box()

{

    $screens = ['page'];

    foreach ($screens as $screen) {

        add_meta_box(

            'meta_box_id',           // Unique ID

            'Custom Meta Box Title',  // Box title

            'callback_function',  // Content callback, must be of type callable

            $screen                   // Post type

        );

    }

}

add_action('add_meta_boxes', 'add_custom_meta_box');


function callback_function($post)

{

   /*Do something*/

}


查看完整回答
反对 回复 2022-07-09
  • 2 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信