Как сделать & ldquo; Установить Feature Image & rdquo; в WordPress требуется [дублировать]

Вы можете избежать ошибок компиляции, если вы удалите определения метода из файлов заголовков и пусть классы содержат только декларации методов и объявления / определения переменных. Определения методов должны быть помещены в файл .cpp (как говорится в рекомендациях по лучшей практике).

Нижняя сторона следующего решения (при условии, что вы поместили методы в файле заголовка, чтобы встроить их), что методы больше не встроены в компилятор, и попытка использования ключевого слова inline создает компоновщик ошибки.

//A.h
#ifndef A_H
#define A_H
class B;
class A
{
    int _val;
    B* _b;
public:

    A(int val);
    void SetB(B *b);
    void Print();
};
#endif

//B.h
#ifndef B_H
#define B_H
class A;
class B
{
    double _val;
    A* _a;
public:

    B(double val);
    void SetA(A *a);
    void Print();
};
#endif

//A.cpp
#include "A.h"
#include "B.h"

#include <iostream>

using namespace std;

A::A(int val)
:_val(val)
{
}

void A::SetB(B *b)
{
    _b = b;
    cout<<"Inside SetB()"<<endl;
    _b->Print();
}

void A::Print()
{
    cout<<"Type:A val="<<_val<<endl;
}

//B.cpp
#include "B.h"
#include "A.h"
#include <iostream>

using namespace std;

B::B(double val)
:_val(val)
{
}

void B::SetA(A *a)
{
    _a = a;
    cout<<"Inside SetA()"<<endl;
    _a->Print();
}

void B::Print()
{
    cout<<"Type:B val="<<_val<<endl;
}

//main.cpp
#include "A.h"
#include "B.h"

int main(int argc, char* argv[])
{
    A a(10);
    B b(3.14);
    a.Print();
    a.SetB(&b);
    b.Print();
    b.SetA(&a);
    return 0;
}
4
задан Gary Woods 13 September 2012 в 17:03
поделиться

3 ответа

Вам нужно подключить действие публикации в настраиваемом PlugIn, который вы пишете.

add_action( 'pre_post_update', 'bawdp_dont_publish' );

function bawdp_dont_publish()
{
    global $post;
    if ( strlen( $post->title ) < 10 ) {
        wp_die( 'The title of your post have to be 10 or more !' );
    }
}

Посмотрите на ( has_post_thumbnail( $post->ID ) ), чтобы получить название, это должно начать вас, вам просто нужно проверить, было ли назначено изображение. чтобы определить, имеет ли место изображение с изображением.

5
ответ дан brasofilo 28 August 2018 в 16:39
поделиться

Учитывая приведенный выше пример Гэри, я написал следующее в моем файле functions.php:

function featured_image_requirement() {
     if(!has_post_thumbnail()) {
          wp_die( 'You forgot to set the featured image. Click the back button on your browser and set it.' ); 
     } 
}
add_action( 'pre_post_update', 'featured_image_requirement' );

Я бы скорее увидел это в плагине - есть одно имя Mandatory Field, но он не работает с запланированными сообщениями. Оба не очень красноречивые решения.

5
ответ дан Douglas Karr 28 August 2018 в 16:39
поделиться

вы можете использовать плагин

https://wordpress.org/plugins/require-featured-image/

, или вы можете копировать и вставлять код ниже в ваш файл wordpress.php wordpress:

<?php
/**
 * Require a featured image to be set before a post can be published.
 */
add_filter( 'wp_insert_post_data', function ( $data, $postarr ) {
    $post_id              = $postarr['ID'];
    $post_status          = $data['post_status'];
    $original_post_status = $postarr['original_post_status'];
    if ( $post_id && 'publish' === $post_status && 'publish' !== $original_post_status ) {
        $post_type = get_post_type( $post_id );
        if ( post_type_supports( $post_type, 'thumbnail' ) && ! has_post_thumbnail( $post_id ) ) {
            $data['post_status'] = 'draft';
        }
    }
    return $data;
}, 10, 2 );
add_action( 'admin_notices', function () {
    $post = get_post();
    if ( 'publish' !== get_post_status( $post->ID ) && ! has_post_thumbnail( $post->ID ) ) { ?>
        <div id="message" class="error">
            <p>
                <strong><?php _e( 'Please set a Featured Image. This post cannot be published without one.' ); ?></strong>
            </p>
        </div>
    <?php
    }
} );
2
ответ дан Zub 28 August 2018 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: