1.Paste Следующий код в ваших файлах тем function.php
.
2. Убедитесь, что плагин WP-REST-API
должен быть установлен на сайте wordpress
add_action( 'rest_api_init', 'register_api_hooks' );
function register_api_hooks() {
register_rest_route(
'custom-plugin', '/login/',
array(
'methods' => 'GET',
'callback' => 'login',
)
);
}
function login($request){
$creds = array();
$creds['user_login'] = $request["username"];
$creds['user_password'] = $request["password"];
$creds['remember'] = true;
$user = wp_signon( $creds, false );
if ( is_wp_error($user) )
echo $user->get_error_message();
return $user;
}
add_action( 'after_setup_theme', 'custom_login' );
Затем ваш API будет создан как
http://www.url.com/wp-json/custom-plugin/login?username=xyz&password=xyz
Попробуйте его с помощью Postman. Вы получите 200
в качестве ответа и user info
Проблема в вашем порядке if/else
.
Установите это так:
if (selected)
{
backgroundBrush = reportsBackgroundBrushSelected;
}
else
{
if (text.Contains("Success"))
{
backgroundBrush = reportsBackgroundBrush1;
}
else if(text.Contains("Error"))
{
backgroundBrush = reportsBackgroundBrush2;
}
else
{
backgroundBrush = reportsBackgroundBrush3;
}
}
Даже если явно не запрашивается, я предлагаю другой способ управления кистями, который, я думаю, может упростить переключатель ForeColor / BackColor и позволяет лучше настроить представление ListBox.
Создать объект класса, который содержит все выбранные / предварительно выбранные кисти и предоставляет общедоступные свойства для изменения этих значений, если / когда это необходимо.
Кроме того, этот класс предоставляет метод для возврата правильной комбинации кистей, выбирая правильные правильные на основе пары условий:
Selected/Focused
или NotAccelerator/NotFocusedRect
) Класс довольно прост.
Он имеет перегруженный конструктор, который позволяет указывать значения по умолчанию или определенные атрибуты Color в соответствии со стандартным внешним видом элемента управления ListBox.
При использовании конструктора по умолчанию (пустого) для комбинации цветов ForeGround / BackGround по умолчанию установлено значение Color.Black
и Color.White
:
public ReportsBrushes() : this(Color.White, Color.Black) { }
, в противном случае он принимает 2 параметра, установить конкретные значения:
public ReportsBrushes(Color ItemBackColor, Color ItemForeColor)
{
this.StandardForeground = new SolidBrush(ItemForeColor);
this.StandardBackground = new SolidBrush(ItemBackColor);
}
Это упрощает метод ListBox.DrawItem
:
private ReportsBrushes reportsBrushes = new ReportsBrushes();
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
ListBox ctl = sender as ListBox;
e.Graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
e.DrawFocusRectangle();
var itemColors = reportsBrushes.GetItemBrushes(ctl.Items[e.Index].ToString(), e.State.HasFlag(DrawItemState.Selected));
using (StringFormat format = new StringFormat())
{
format.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(ctl.Items[e.Index].ToString(), ctl.Font, itemColors.ForeColor, e.Bounds, format);
}
}
private void listBox1_MeasureItem(object sender, MeasureItemEventArgs e)
{
e.ItemHeight = listBox1.Font.Height + 4;
}
Класс ReportsBrushes
:
internal class ReportsBrushes
{
public ReportsBrushes() : this(Color.White, Color.Black) { }
public ReportsBrushes(Color ItemBackColor, Color ItemForeColor)
{
this.StandardForeground = new SolidBrush(ItemForeColor);
this.StandardBackground = new SolidBrush(ItemBackColor);
}
public SolidBrush StandardForeground { get; set; }
public SolidBrush StandardBackground { get; set; }
public SolidBrush SelectedForeground { get ; set ; } =
new SolidBrush(Color.FromKnownColor(KnownColor.HighlightText));
public SolidBrush SelectedBackground { get; set; } =
new SolidBrush(Color.FromKnownColor(KnownColor.Highlight));
public SolidBrush SuccessBackground { get; set; } =
new SolidBrush(Color.LimeGreen);
public SolidBrush ErrorBackground { get; set; } =
new SolidBrush(Color.OrangeRed);
public (SolidBrush ForeColor, SolidBrush BackColor) GetItemBrushes(string ItemText, bool ItemSelected)
{
if (ItemSelected)
return (this.SelectedForeground, this.SelectedBackground);
else
{
if (ItemText.Contains("Success"))
return (this.StandardForeground, this.SuccessBackground);
if (ItemText.Contains("Error"))
return (this.StandardForeground, this.ErrorBackground);
return (this.StandardForeground, this.StandardBackground);
}
}
}