【问题标题】:Trying to add a custom meta box to wordpress尝试将自定义元框添加到 wordpress
【发布时间】:2014-05-06 13:20:42
【问题描述】:

我正在尝试将自定义元框添加到 wordpress 页面,该页面将值存储在自定义字段中。它不工作。显示元框,但是当您按下更新时,输入到文本框中的值会丢失,并且不会将任何内容写入 wp_postmeta 表(未创建 _c3m_sponsor_ur 元键)

我从网上的一个例子中改编了这个。我还尝试添加一个 die 语句以查看是否调用了保存帖子,但没有任何内容死亡。我也不明白为什么没有为页面创建 add_post_meta

add_action( 'add_meta_boxes', 'c3m_sponsor_meta' );
        function c3m_sponsor_meta() {
                add_meta_box( 'c3m_meta', 'Sponsor URL Metabox', 'c3m_sponsor_url_meta', 'page', 'side', 'high' );
                }

            function c3m_sponsor_url_meta( $post ) {
                $c3m_sponsor_url = get_post_meta( $post->ID, '_c3m_sponsor_url', true);
                if (!isset($c3m_sponsor_url))
                    add_post_meta($post->ID, '_c3m_sponsor_url', '', false);
                echo 'Please enter the sponsors website link below';
                ?>
                <input type="text" name="c3m_sponsor_url" value="<?php echo esc_attr( $c3m_sponsor_url ); ?>" />
                <?php
        }

add_action( 'save_post', 'c3m_save_project_meta' );

        function c3m_save_project_meta( $post_ID ) {
            die('here');
            global $post;
            if( $post->post_type == "page" ) {
                if (isset( $_POST ) ) {
                    update_post_meta( $post_ID, '_c3m_sponsor_url', strip_tags( $_POST['c3m_sponsor_url'] ) );
                }
            }
        }

非常感谢任何解决此问题的帮助 非常感谢

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    这可能对你有帮助:--

    add_action( 'save_post', 'c3m_save_project_meta' );
    
    function c3m_save_project_meta( $post_ID ) {
        if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] )
        {
            if (isset( $_POST ) ) {
                update_post_meta( $post_ID, '_c3m_sponsor_url', strip_tags( $_POST['c3m_sponsor_url'] ) );
            }
        }
    }
    


    已编辑:-

    您可以简单地使用Advanced Custom Fields 插件而不是使用代码。这个插件对自定义元字段很有帮助。

    【讨论】:

    • 谢谢,但这并没有解决。为什么第一次制作元框时没有调用模具或创建自定义字段?再次感谢您的回答
    • 您的自定义字段已创建,因为您在显示功能中添加了add_post_meta...
    • 你在页面中测试吗???因为此过程仅在您更新或创建page 时更新。看到这个条件'page' == $_POST['post_type']
    • 您好,它肯定不是创建的,因为它不在数据库中。在我更新页面后,当前页面或任何页面都没有带有键 _c3m_sponsor_url 的 postmeta。是的,我正在处理页面而不是帖子。然而,它可能是一个错误的主题,因为页面元字段也不起作用。当您保存页面时,它们不会在文本字段中“保留”它们的值。我还没有检查那些数据库
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    相关资源
    最近更新 更多