在我的定制贴子类型后端添加一个metabox短码“PayPal Accept Payment”

时间:2014-07-22 作者:Arbnor Tefiki

我已经创建了一本带有annotum主题的科学杂志,现在我希望用户在发布文章时付费,但当他们单击publish以使用paypal付费时,我没有编程技能来做到这一点,所以我想在我的自定义帖子类型中创建一个元框:文章中包含一个位于文章帖子类型管理区域的WP Easy paypal Payment Accept小部件。在dashboard admin区域中,我通过以下代码创建了此小部件(带有短代码:Paypal_payment_accept();) :

  function wpc_dashboard_widget_function() {
    // Entering the text between the quotes
    echo Paypal_payment_accept();
   }
   function wpc_add_dashboard_widgets() {
    wp_add_dashboard_widget(\'wp_dashboard_widget\', \'Technical information\',        \'wpc_dashboard_widget_function\');
   }
   add_action(\'wp_dashboard_setup\', \'wpc_add_dashboard_widgets\' ); 
因此,问题显然是:

enter image description here

enter image description here

1 个回复
最合适的回答,由SO网友:wxT3APyGfkYJVK 整理而成

将其添加到子主题/插件函数中。php。我认为这应该会奏效。让我知道

function your_meta_callback( $post ) {
 echo Paypal_payment_accept();
}

add_meta_box( \'your_meta\', __( \'Meta Box Title\', \'your-textdomain\' ), \'your_meta_callback\', \'your-posttype-name\', \'side\' );
有关更多信息,请参阅上的Wordpress Codexadd_meta_box().

更新:好的,我已经调查过了。如果我们将任何表单嵌套到post editor表单中,我们将遇到问题,因为会有两次提交和其他事情。因此,最好的方法是使用模态(Wordpress的原生jQuery弹出窗口)。因此,根据您在评论中的源代码,我将其更改为以下内容:

function wpt_article_pay() {
 global $pagenow,$typenow;

 //Enqueue the required script to use a modal
 add_thickbox();

 //Check if you are on the correct page 
 if (!in_array( $pagenow, array( \'post.php\', \'post-new.php\' ) ))
    return;

 /* Add a link to open the modal (uses the inlineID) to open the code we
 later add in the footer */
 echo \'<a href="#TB_inline?height=155&width=300&inlineId=your-paypal-modal" class="thickbox">PayPal</a>\';
}

//Enqueue the inline form to be displayed in the modal.
function enqueue-your-paypal-modal(){
    global $pagenow,$typenow;   
    if (!in_array( $pagenow, array( \'post.php\', \'post-new.php\' )))
        return;
?>
<div id="your-paypal-modal" style="display:none">
    <?php echo paypal_payment_accept(); ?>
</div>
<?php
}

add_filter(\'admin_footer\',\'enqueue-your-paypal-modal\');
这将确保您有一个正常工作的paypal按钮,但它不会定义正确的返回URL,因为您只能在插件设置中定义一个。此外,您不能定义它应该在新窗口中打开。我不知道你是否觉得这样做足够舒服,但我建议你研究一下贝宝的按钮API,也许你可以自己创建按钮:https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/ProfileAndTools/#id08A9E900IEX

结束