标签: wordpress-plugin

如何实现Post-Redirect - 获取Wordpress插件的管理菜单页面?

我正在写一个Wordpress插件,它添加了一个管理菜单页面.在页面中是一个表单.提交表单时,插件会写入数据库.但后来我遇到了一个问题:每当用户重新加载页面时,都会询问他/她是否再次发送POSTDATA.如果用户单击"是",则插件会再次写入数据库.

经过一番搜索,我找到了一个解决方案,即"Post-Redirect-Get"模式.然后,我发现很难将这种模式实现到Wordpress插件中.

  1. 插件本身无法发送HTTP 301/302,因为Wordpress核心已经输出了一些内容.

  2. 可以在HTML头中插入元标记(以便发出重定向).但据W3C称,元重定向已被弃用,因此我认为最好不要使用它.

  3. 使用JavaScript window.location.但是如果在用户的浏览器中禁用了JavaScript呢?

有没有其他方法来实现重定向?

wordpress redirect post-redirect-get wordpress-plugin

4
推荐指数
1
解决办法
1494
查看次数

在wordpress插件中定义动态页面

我正在创建我的第一个wordpress插件.在其中,用户可以选择添加新城市并查看这些城市的活动.

我的客户要求是URL必须是这样的

SITE_NAME/cities/NY
Run Code Online (Sandbox Code Playgroud)

要么

SITE_NAME/cities/Califonia
Run Code Online (Sandbox Code Playgroud)

决定是我将创建一个文件夹城市,如果用户尝试创建一个新城市,我将在该城市的该文件夹中创建一个文件,此外我还将该条目添加到数据库中.我将插入PHP代码也进入文件.

是WP插件的新手.我的方法是否正确(用于创建文件)?还有其他方法吗?

php wordpress wordpress-plugin php-5.2

4
推荐指数
1
解决办法
3847
查看次数

警告:preg_match()[function.preg-match]:找不到结束分隔符'^'

我正试图解决我用我的一个wordpress插件遇到的问题.

这是第666行

function isUrl($url)
{
    return preg_match("^http:\/\/[-0-9a-z\._]+.*$/i", trim( $url ));
}
Run Code Online (Sandbox Code Playgroud)

您对如何解决此警告有何看法?这很刺激.我无法理解,我已经尝试过,研究过一切!

php validation error-handling wordpress-plugin preg-match

4
推荐指数
1
解决办法
1万
查看次数

PHP使用私有方法作为回调

我是第一次尝试PHP + WP。我打算使用WP插件挂钩。作为C ++程序员,我还打算将所有代码放入类中。目前,我有点受以下应该安装WP插件挂钩的代码段的困扰:

   class SettingsHandler
   {
      public function __construct()
      {
         add_filter('plugin_action_links', array($this, 'AddSettingsLink'), 10, 2);
      }

      private function AddSettingsLink($links, $file)
      {
         if ($file==plugin_basename(__FILE__))
         {
            $settings_link = '<a href="options-general.php?page=options_page">Settings</a>';
            array_unshift($links, $settings_link);
         }       
         return $links;
      }
   }

   $settingsHandler = new SettingsHandler();
Run Code Online (Sandbox Code Playgroud)

这给我一个错误消息:警告:call_user_func_array()期望参数1是有效的回调,无法访问E:\ xampp \ apps \ wordpress \ htdocs \ wp-includes \ plugin.php中的私有方法SettingsHandler :: AddSettingsLink() 199行

当我将回调切换为public时,错误消失了。似乎我不能使用私有方法作为PHP / WP中的回调。这将是非常糟糕的,因为它揭示了许多不应被其他任何人直接访问的回调方法。我可以将此类回调设为私有吗?

我还发现了以下运行良好的代码段:

   class a
   {
      public function __construct()
      {
         $str = " test test ";
         $result = preg_replace_callback('/test/', array($this, 'callback'), $str);
         echo $result; …
Run Code Online (Sandbox Code Playgroud)

php wordpress private callback wordpress-plugin

4
推荐指数
1
解决办法
3186
查看次数

显示所有注册用户(不仅仅是作者)的简单公共用户配置文件

在一个简单的WordPress插件中,我/user/user_id使用以下代码将commenter链接重定向到URL :

define('PROFILE', '<a href="/user/%d">%s</a>');

function my_get_comment_author_link($comment_ID) {
    global $comment;
    return sprintf(PROFILE, $comment->user_id, 
                            $comment->comment_author);
}

add_action('get_comment_author_link',
           'my_get_comment_author_link');
Run Code Online (Sandbox Code Playgroud)

我怎么能显示一个简单的公共用户配置文件(对于所有注册用户而不仅仅是作者)在该URL上显示用户名?

我想我应该在我的2013年主题中创建一个PHP脚本 -

<?php
/* Template Name: Public User Profile */
?>

<?php get_header(); ?>

<?php 
      $my_query = new WP_Query($args);
      // somehow get the user ID out of URL?
      // somehow get the WP_User object?
      printf('<p>Name: %s</p>', $user->display_name);
?>

<?php get_footer(); ?>
Run Code Online (Sandbox Code Playgroud)

但是当重新获得URL时,如何使WordPress执行该PHP脚本/user/user_id?

我应该在这里使用Rewrite API以及如何使用?我尝试了以下,但没有看到任何影响:

                    add_rewrite_rule('/user/(\d+)',
                                     'index.php?XXX=$matches[1]',
                                     'top'
                    );
                    flush_rewrite_rules();
Run Code Online (Sandbox Code Playgroud)

或者我错过了什么,也许我应该首先添加自定义帖子类型?(如你所见 - 我很困惑,"迷失在文档中").

更新:

我可以覆盖 …

wordpress wordpress-theming wordpress-plugin

4
推荐指数
1
解决办法
1381
查看次数

wp_redirect()函数在WP管理员中不起作用

我将尝试在wordpress admin中使用以下代码进行重定向.

if(isset($_POST['submit'])) 
    {
wp_redirect('admin.php?page=job-creation');
}
Run Code Online (Sandbox Code Playgroud)

我也尝试wp_redirect('admin.php?page=job-creation');而不是

wp_safe_redirect('admin.php?page=job-creation'); 
Run Code Online (Sandbox Code Playgroud)

和

header('location: admin.php?page=job-creation');
Run Code Online (Sandbox Code Playgroud)

所有代码在localhost中都正常工作.但它不能在线工作(www.example.com).

帮帮我.

php wordpress plugins redirect wordpress-plugin

4
推荐指数
1
解决办法
6900
查看次数

Woocommerce在标签内添加部分

我正在做一个woocommerce的小插件.在该插件中,我想在管理区域中显示部分,就像shipping Options, Flat Rate, Free Shipping etc在woocommerce设置仪表板的运输选项卡中一样.首先,我从插件创建了一个选项卡,在该选项卡中我想要这些部分.为了创建选项卡,我从这个链接获取代码所以我的插件代码是这样的

<?php
/**
 * Plugin Name: WooCommerce Settings Tab 
 * Plugin URI: http://www.wordpress.org
 * Description: Woocmmerce settings tab.
 * Author: Author Name
 * Author URI: http://www.wordpress.org
 * Version: 1.0
 *
 */

class WC_Settings_Tab {
    public static function init() {
        add_filter( 'woocommerce_settings_tabs_array', __CLASS__ . '::add_settings_tab', 50 );
        add_action( 'woocommerce_settings_tabs_settings_tab_demo', __CLASS__ . '::settings_tab' );
        add_action( 'woocommerce_update_options_settings_tab_demo', __CLASS__ . '::update_settings' );
        add_action( 'woocommerce_sections',__CLASS__ . '::get_sections');
    }

    public static function add_settings_tab( $settings_tabs …
Run Code Online (Sandbox Code Playgroud)

php wordpress plugins wordpress-plugin woocommerce

4
推荐指数
2
解决办法
3447
查看次数

自定义验证在版本4.1.1中的联系表格7中不起作用

我必须在联系表单7中创建一个带有自定义验证字段的表单.它不适用于Contact Form 7的最新版本(4.1.1),但使用的是旧版本.

我创建了一个从表单中获取优惠券代码的字段.如果优惠券是从"HIP"启动的,我想验证条目.我的代码如下:

add_filter( 'wpcf7_validate_text', 'your_validation_filter_func', 999, 2 );
add_filter( 'wpcf7_validate_text*', 'your_validation_filter_func', 999, 2 );


function your_validation_filter_func( $result, $tag ) {
$type = $tag['type'];
$name = $tag['name'];      
if ( 'coupon_code' == $name ) {
$the_value = $_POST[$name];

        $myresult = substr($the_value, 0, 3);
        if($myresult=="HIP")
        {
            $result['valid'] = true;
        }
        else
        {
            $result['valid'] = false;
            $result['reason'][$name] = "Not a valid coupon code";
        }
}

return $result;
}
Run Code Online (Sandbox Code Playgroud)

请给我一些建议.

validation wordpress wordpress-plugin contact-form contact-form-7

4
推荐指数
2
解决办法
6272
查看次数

如何整合PayPal快速结账?

我正在开发一个需要PayPal Express结账功能的wordpress插件.

我在paypal网站上关注如何整合上下文结账功能的这篇文章(https://developer.paypal.com/webapps/developer/docs/classic/express-checkout/integration-guide/ECGettingStarted/#id53620a28- e357-4744-9979-66ed5c592183)在1步给了我以下表格.

<form method=post action=https://api-3t.sandbox.paypal.com/nvp>
    <input type=hidden name=USER value=API_username>
    <input type=hidden name=PWD value=API_password>
    <input type=hidden name=SIGNATURE value=API_signature>
    <input type=hidden name=VERSION value=XX.0>
    <input type=hidden name=PAYMENTREQUEST_0_PAYMENTACTION value=Sale>
    <input name=PAYMENTREQUEST_0_AMT value=19.95>
    <input type=hidden name=RETURNURL value=https://www.YourReturnURL.com>
    <input type=hidden name=CANCELURL value=https://www.YourCancelURL.com>
    <input type=submit name=METHOD value=SetExpressCheckout>
</form>
Run Code Online (Sandbox Code Playgroud)

我已经从PayPal添加了我自己的API_username,API_password和API_Signature但是在提交时显示了ACK=Failure.

以下是来自PayPal的消息:

TIMESTAMP=2015%2d10%2d30T05%3a27%3a09Z&CORRELATIONID=24cb45b8dd36b&ACK=Failure&VERSION=0%2e000000&BUILD=18308778&L_ERRORCODE0=10002&L_SHORTMESSAGE0=Security%20error&L_LONGMESSAGE0=Security%20header%20is%20not%20valid&L_SEVERITYCODE0=Error
Run Code Online (Sandbox Code Playgroud)

因此,我无法转到PayPal文档的第2步,因此需要帮助.我究竟做错了什么?

php wordpress paypal wordpress-plugin paypal-sandbox

4
推荐指数
1
解决办法
2232
查看次数

如何在WordPress上跨主机名并行下载?

当我在GTmetrix上查看我的WordPress网站时,我收到此消息"跨主机名并行化下载"> https://gtmetrix.com

以下是详细信息> https://gtmetrix.com/parallelize-downloads-across-hostnames.html

我该如何解决这个问题?

wordpress performance wordpress-plugin pagespeed google-pagespeed

4
推荐指数
1
解决办法
1万
查看次数