如何使用OOP类将字段添加到Wordpress仪表板中的“设置”>“常规”中

以下程序性PHP代码将在WP仪表板的“设置”>“常规”中添加5个文本字段,但是如何使用OOP类实现相同的目的?

function link_settings_api_init() {
    // Add the section to general settings so we can add our
    // fields to it
    add_settings_section(
       'links_setting_section','Social Links','links_setting_section_callback_function','general'
   );

    // Add the field with the names and function to use for our new
    // settings,put it in our new section
    add_settings_field(
       'facebook_link','Facebook Link','facebook_function','general','links_setting_section'
   );

   add_settings_field(
        'twitter_link','Twitter Link','twitter_function','links_setting_section'
    );

    add_settings_field(
        'linkedin_link','Linkedn Link','linkedin_function','links_setting_section'
    );

    add_settings_field(
        'instagram_link','Instagram Link','instagram_function','links_setting_section'
    );

    add_settings_field(
        'youtube_link','YouTube Link','youtube_function','links_setting_section'
    );
    // Register our setting so that $_POST handling is done for us and
    // our callback function just has to echo the <input>
    register_setting( 'general','facebook_link' );
    register_setting( 'general','twitter_link' );
    register_setting( 'general','linkedin_link' );
    register_setting( 'general','instagram_link' );
    register_setting( 'general','youtube_link' );

} // link_settings_api_init()

add_action( 'admin_init','link_settings_api_init' );

function links_setting_section_callback_function() {
    echo '<p>Add Social Media Links for HSPH</p>';
}

function facebook_function() {
$facebook_link = get_option( 'facebook_link','' );
echo '<input id="facebook_link" style="width: 35%;" type="text" title="Facebook Link" name="facebook_link" value="' . sanitize_text_field($facebook_link) . '" />';
}

function twitter_function() {
$twitter_link = get_option( 'twitter_link','' );
echo '<input id="twitter_link" style="width: 35%;" type="text" title="Twitter Link" name="twitter_link" value="' . sanitize_text_field($twitter_link) . '" />';
}

function linkedin_function() {
$linkedin_link = get_option( 'linkedin_link','' );
echo '<input id="linkedin_link" style="width: 35%;" type="text" title="LinkedIn Link" name="linkedin_link" value="' . sanitize_text_field($linkedin_link) . '" />';
}

function instagram_function() {
$instagram_link = get_option( 'instagram_link','' );
echo '<input id="instagram_link" style="width: 35%;" type="text" title="Instagram Link" name="instagram_link" value="' . sanitize_text_field($instagram_link) . '" />';
}

function youtube_function() {
$youtube_link = get_option( 'youtube_link','' );
echo '<input id="youtube_link" style="width: 35%;" type="text" title="YouTube Link" name="youtube_link" value="' . sanitize_text_field($youtube_link) . '" />';
}

如何将以上内容转换为可在PHP OOP中使用

class MY_Plugin_Social {



    public function init() {

add_action( 'admin_init','link_settings_api_init' );
// or should I use an array     add_action( 'admin_init',array( $this,'link_settings_api_init' ),99 );
    }

public function link_settings_api_init() {
    // Add the section to general settings so we can add our
    // fields to it
    add_settings_section(
       'links_setting_section','youtube_link' );

} // link_settings_api_init()

public function links_setting_section_callback_function() {
    echo '<p>Add Social Media Links for HSPH</p>';
}

public function facebook_function() {
$facebook_link = get_option( 'facebook_link','' );
echo '<input id="facebook_link" style="width: 35%;" type="text" title="Facebook Link" name="facebook_link" value="' . sanitize_text_field($facebook_link) . '" />';
}

public function twitter_function() {
$twitter_link = get_option( 'twitter_link','' );
echo '<input id="twitter_link" style="width: 35%;" type="text" title="Twitter Link" name="twitter_link" value="' . sanitize_text_field($twitter_link) . '" />';
}

public function linkedin_function() {
$linkedin_link = get_option( 'linkedin_link','' );
echo '<input id="linkedin_link" style="width: 35%;" type="text" title="LinkedIn Link" name="linkedin_link" value="' . sanitize_text_field($linkedin_link) . '" />';
}

public function instagram_function() {
$instagram_link = get_option( 'instagram_link','' );
echo '<input id="youtube_link" style="width: 35%;" type="text" title="YouTube Link" name="youtube_link" value="' . sanitize_text_field($youtube_link) . '" />';
}

}

我收到类似于警告的回调错误:call_user_func()期望参数1为有效的回调,/ home / xyz / wp-admin / includes / template中找不到函数'links_setting_section_callback_function'或无效的函数名称。第1608行的php

zgfjwzwxb 回答:如何使用OOP类将字段添加到Wordpress仪表板中的“设置”>“常规”中

您应该将add_actionadd_filter的第二个参数作为数组传递。例 如果my_public_method是静态函数,则add_action( 'init',[ $this,'my_public_method' ] ); $this可以用完全限定的类名替换。或者,您可以将闭包作为第二个参数。参见下面的示例

<?php
class Example()
{
    public function __construct() {
        add_action('init',$this->method());
    }

    public function method() {
        return function() { echo 'I am a Closure';};
    }
}
本文链接:https://www.f2er.com/3163693.html

大家都在问