繁体   English   中英

WordPress自定义帖子类型

Wordpress custom post types

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

<?php
/*
Plugin Name: Opportunities
Description: Custom Post Types for "The Oppourtunities Blog" website.
Author: Sheju
Author URI: http://www.localhost.com
*/

if( ! function_exists( 'Opportunity_create_post_type' ) ) :
    function Opportunity_create_post_type() {
        $labels = array(
            'name' => __( 'Opportunity' ),
            'singular_name' => __( 'Opportunity' ),
            'add_new' => __( 'Add New Opportunity' ),
            'all_items' => __( 'All Opportunities' ),
            'add_new_item' => __( 'Add New Opportunity' ),
            'edit_item' => __( 'Edit Opportunity' ),
            'new_item' => __( 'New Opportunity' ),
            'view_item' => __( 'View Opportunity' ),
            'search_items' => __( 'Search Opportunities' ),
            'not_found' => __( 'No Opportunities found' ),
            'not_found_in_trash' => __( 'No Opportunities found in trash' ),
            'parent_item_colon' => __( 'Parent Opportunity' )
            //'menu_name' => default to 'name'
        );
        $args = array(
            'labels' => $labels,
            'public' => true,
            'has_archive' => true,
            'publicly_queryable' => true,
            'query_var' => true,
            'rewrite' => true,
            'capability_type' => 'post',
            'hierarchical' => false,
            'supports' => array(
                'title',
                'editor',
                'excerpt',
                //'thumbnail',
                //'author',
                //'trackbacks',
                //'custom-fields',
                //'comments',
                'revisions',
                //'page-attributes', // (menu order, hierarchical must be true to show Parent option)
                //'post-formats',
            ),
            'taxonomies' => array( 'category', 'post_tag' ), // add default post categories and tags
            'menu_position' => 5,
            'register_meta_box_cb' => 'Opportunity_add_post_type_metabox'
        );
        register_post_type( 'Opportunity', $args );
        //flush_rewrite_rules();

        register_taxonomy( 'Opportunity_category', // register custom taxonomy - Opportunity category
            'Opportunity',
            array( 'hierarchical' => true,
                'label' => __( 'Opportunity categories' )
            )
        );
        register_taxonomy( 'Opportunity_tag', // register custom taxonomy - Opportunity tag
            'Opportunity',
            array( 'hierarchical' => false,
                'label' => __( 'Opportunity tags' )
            )
        );
    }
    add_action( 'init', 'Opportunity_create_post_type' );


    function Opportunity_add_post_type_metabox() { // add the meta box
        add_meta_box( 'Opportunity_metabox', 'More Details about Opportunity', 'Opportunity_metabox', 'Opportunity', 'normal' );
    }


    function Opportunity_metabox() {
        global $post;
        // Noncename needed to verify where the data originated
        echo '<input type="hidden" name="Opportunity_post_noncename" id="Opportunity_post_noncename" value="' . wp_create_nonce( plugin_basename(__FILE__) ) . '" />';

        // Get the data if its already been entered
        $Opportunity_post_name = get_post_meta($post->ID, '_Opportunity_post_name', true);
        $Opportunity_post_desc = get_post_meta($post->ID, '_Opportunity_post_desc', true);
        $Opportunity_post_duration = get_post_meta($post->ID, '_Opportunity_post_duration', true);

        // Echo out the field
        ?>

        <div class="width_full p_box">
            <p>
                <label>Name<br>
                    <input type="text" name="Opportunity_post_name" class="widefat" value="<?php echo $Opportunity_post_name; ?>">
                </label>
            </p>
            <p><label>Description<br>
                    <textarea name="Opportunity_post_desc" class="widefat"><?php echo $Opportunity_post_desc; ?></textarea>
                </label>
            </p>
            <p><label>Duration<br>
                    <textarea name="Opportunity_post_duration" class="widefat"><?php echo $Opportunity_post_duration; ?></textarea>
                </label>
            </p>
        </div>
    <?php
    }


    function Opportunity_post_save_meta( $post_id, $post ) { // save the data
        // verify this came from the our screen and with proper authorization,
        // because save_post can be triggered at other times
        if( !wp_verify_nonce( $_POST['Opportunity_post_noncename'], plugin_basename(__FILE__) ) ) {
            return $post->ID;
        }

        // is the user allowed to edit the post or page?
        if( ! current_user_can( 'edit_post', $post->ID )){
            return $post->ID;
        }
        // ok, we're authenticated: we need to find and save the data
        // we'll put it into an array to make it easier to loop though

        $Opportunity_post_meta['_Opportunity_post_name'] = $_POST['Opportunity_post_name'];
        $Opportunity_post_meta['_Opportunity_post_desc'] = $_POST['Opportunity_post_desc'];
        $Opportunity_post_meta['_Opportunity_post_duration'] = $_POST['Opportunity_post_duration'];

        // add values as custom fields
        foreach( $Opportunity_post_meta as $key => $value ) { // cycle through the $Opportunity_post_meta array
            // if( $post->post_type == 'revision' ) return; // don't store custom data twice
            $value = implode(',', (array)$value); // if $value is an array, make it a CSV (unlikely)
            if( get_post_meta( $post->ID, $key, FALSE ) ) { // if the custom field already has a value
                update_post_meta($post->ID, $key, $value);
            } else { // if the custom field doesn't have a value
                add_post_meta( $post->ID, $key, $value );
            }
            if( !$value ) { // delete if blank
                delete_post_meta( $post->ID, $key );
            }
        }
    }
    add_action( 'save_post', 'Opportunity_post_save_meta', 1, 2 ); // save the custom fields
endif; // end of function_exists()


if( ! function_exists( 'view_Opportunities_posts' ) ) : // output
    function view_Opportunities_posts( $num = 4, $do_shortcode = 1, $strip_shortcodes = 0 ) {

        $args = array(
            'numberposts'     => $num,
            'offset'          => 0,
            //'category'        => ,
            'orderby'         => 'menu_order, post_title', // post_date, rand
            'order'           => 'DESC',
            //'include'         => ,
            //'exclude'         => ,
            //'meta_key'        => ,
            //'meta_value'      => ,
            'post_type'       => 'Opportunity',
            //'post_mime_type'  => ,
            //'post_parent'     => ,
            'post_status'     => 'publish',
            'suppress_filters' => true
        );

        $posts = get_posts( $args );

        $html = '';
        foreach ( $posts as $post ) {
            $meta_name = get_post_meta( $post->ID, '_echo"test"'.'_Opportunity_post_name', true );
            $meta_desc = get_post_meta( $post->ID, '_Opportunity_post_desc', true );
            $meta_duration = get_post_meta( $post->ID, '_Opportunity_post_duration', true );


            /*if (!empty($meta_duration) && !empty($$meta_duration['_Opportunity_post_duration']));
            */

            /*<?php $my_meta = get_post_meta($post->ID,'_my_meta',TRUE); ?>

            <?php if (!empty($my_meta) && !empty($my_meta['image_one'])): ?>
    <div class="archive_images_one"><a href="<? echo $my_meta['image_one']; ?>" title="<? echo $my_meta['image_one_lightbox_title']; ?>"  rel="lightbox"><img border="0"  width="300px" height="200px" src="<? echo $my_meta['image_one']; ?>" alt="Android and iPhone App Development"></a></div>
<?php endif; ?>*/




            //$img = get_the_post_thumbnail( $post->ID, 'medium' );
//          if( empty( $img ) ) {
//              $img = '<img src="'.plugins_url( '/img/default.png', __FILE__ ).'">';
//          }
// 
// 
//          if( has_post_thumbnail( $post->ID ) ) {
//              //$image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' );
//              //$img_url = $image[0];
//              $img = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'thumbnail' );
//              $img_url = $img[0];
// 
//              //the_post_thumbnail( 'thumbnail' ); /* thumbnail, medium, large, full, thumb-100, thumb-200, thumb-400, array(100,100) */
//          }
// 
            $content = $post->post_content;
            if( $do_shortcode == 1 ) {
                $content = do_shortcode( $content );
            }
            if( $strip_shortcodes == 1 ) {
                $content = strip_shortcodes( $content );
            }

            $html .= '
            <div>
                <h3>'.$post->post_title.'</h3>
                <div>'.$content.'</div>
                <div>
                    <p>'.$meta_name.'</p>
                    <p>'.$meta_desc.'</p>
                    <p>'.$meta_duration.'</p>
                </div>

            </div>
            ';
        }
        $html = '<div class="wrapper">'.$html.'</div>';
        return $html;
    }
endif; // end of function_exists()
?>

我仅在存在值的情况下才需要为输出中的元字段添加自定义标签。 请帮忙做。

我试图在最后更改p标签(类似这样):

            <h3>'.$post->post_title.'</h3>
            <div>
                <p>Name: '.$meta_name.'</p>
                <p>Description: '.$meta_desc.'</p>
            </div>
            <div>'.$img.'</div>
            <div>'.$content.'</div>
1 个回复

不能100%地确定我了解您的需求,但是如果您只想显示具有特定值的元数据,则可以执行以下操作:

$html .= '<div>';
$html .= '<h3>' . $post->post_title . '</h3>';
$html .= '<div>' . $content . '</div>';
$html .= '<div>';
if( !empty($meta_name) ) {
     $html .= '<p>' . $meta_name . '</p>';
}
if( !empty($meta_desc) ) {
     $html .= '<p>' . $meta_desc . '</p>';
}
if( !empty($meta_duration) ) {
     $html .= '<p>' . $meta_duration . '</p>';
}
$html .= '</div>';
$html .= '</div>';
1 WordPress自定义帖子类型

我目前正在尝试使用WOrdPress自定义帖子类型创建支持票证系统,目前我有以下内容,并且工作正常。 上面的代码有效,但我不确定如何为上述票证添加类别,我希望能够将这些票证分配给其他具有职员角色的WordPress用户。 ...

2 自定义帖子类型wordpress

我想创建一个称为“推荐”的自定义帖子类型,为此,我想让管理员有机会添加公司名称/用户名以及他们提供的推荐信息,我知道我可以通过声明一个自定义帖子类型来做到这一点。在我的functions.php文件中,但是它似乎不起作用,我得到的只是普通的帖子字段,有人可以告诉我我要去哪里错了,或者我该怎么做? ...

3 WordPress自定义帖子类型

我创建WordPress自定义帖子类型并按分类显示帖子,这是代码 运行代码时,它会显示所有帖子,但是我只想显示巴基斯坦的那些帖子,我该怎么办? ...

4 wordpress自定义帖子类型

所以我刚刚为我的wordpress主题制作了一个名为“Products”的自定义帖子类型。 当我在其中创建一个新帖子并查看它时,链接是这样的: “ http:// localhost / wordpress / product / a-product-title ” 此页面按预期查 ...

5 自定义帖子类型wordpress

我创建了一个名为show的自定义帖子类型。如何告诉wordpress去show.php而不是single.php来加载内容? 这很关键,因为single.php不会携带我拥有的额外字段的代码,这就是为什么我要使用show.php 谢谢 ...

6 WordPress自定义帖子类型

我正在构建一个自定义帖子类型,并寻找一个解决方案,要么在那里有一个自定义元框,以便管理员可以选择自定义帖子类型出现在哪个页面。 例如,我有一个名为Testimonials的自定义帖子类型。 这是一个页面上的推荐列表,其中包含特色图像,标题和内容。 将会有一个列出所有列表的页面, ...

7 WordPress自定义自定义帖子类型?

我被要求在客户WordPress网站上添加帖子部分。 对wordpress来说是新鲜事物,我对wordpress功能的术语是陌生的。 在菜单中,我可以看到现有的两个项目,如下所示: 他们有“职位”和“属性”,现在他们想添加与“属性”相同的内容,但又添加了一个名为“待售属性”的类别 ...

8 WordPress-访问自定义帖子类型帖子

我创建了一个自定义帖子类型并创建了一个函数,使其显示在主页上。 这是我的代码: 在文档中,我发现我可以使用来访问帖子 单{型交} .PHP 但是如果我创建一个名为 单recipes.php 我仍然收到“找不到页面”错误。 有办法解决这个问题还是我做 ...

9 WordPress计算不同自定义帖子类型的用户帖子

我一直在寻找一种方法来计算用户创建的自定义帖子的数量,并能够使用以下代码段来实现: 然后用以下命令回显结果: 我的问题:上面的代码仅输出自定义帖子类型“ foo_type”的计数。 如果我有两个自定义帖子类型-“ foo_type”和“ bar_type”-如何更改此代码,以便 ...

10 WordPress,自定义帖子类型与许多帖子的关系

我有一本电子书,希望将其整合到wordpress中。 我将必须获得一个页面,该页面列出来自自定义帖子“ books”的书籍。 单击一本书时,我将显示该书的不同章节。 最后,当单击某个章节时,我想显示它。 知道这些章节将存储在自定义帖子“章节”中。 我一对一地搜索自定义类型关系。 欢迎 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM